UserData выдает ошибку тайм-аута при доступе к корзине s3

avatar
14578446
8 апреля 2018 в 06:26
736
1
1

Я пытаюсь получить доступ к объекту из общедоступной корзины S3, но получаю следующую ошибку при выполнении моего вспомогательного сценария Cfn-init:

Трассировка ConnectionError (последний последний вызов): Файл "cfnbootstrap\util.pyc", строка 162, в _retry Файл "cfnbootstrap\util.pyc", строка 234, в _timeout ConnectionError: ("Соединение прервано", ошибка (10060, 'Попытка подключения не удалась, так как подключенная сторона не ответила должным образом через некоторое время, или установленное соединение не удалось, поскольку подключенный хост не ответил'))"

Я могу получить доступ к корзине S3, если использую RDP для инстанса и изменю настройки прокси в браузере.

Ниже мой код:

 "Resources": {
    "WebServer": {
        "Type" : "AWS::EC2::Instance",
        "Metadata": {
            "AWS::CloudFormation::Authentication": {
                "S3AccessCreds": {
                    "type": "S3",
                    "roleName": "sit-test-user",
                    "buckets" : ["sit-test-bucket"]
                }
            },
            "AWS::CloudFormation::Init": {
                "config": {
                    "sources": {
                        "c:\\S3\\xxxx" : "https://s3-ap-southeast-2.amazonaws.com/xxxxxxx/xxxxxx.ps1"
                    }
                }
            }
        },



"UserData" : {
              "Fn::Base64" : { 
                  "Fn::Join" : ["", [
                  "<script>\n",
                    "cfn-init.exe -s ", 
                    {"Ref" : "AWS::StackId"}, 
                    " -r WebServer --region ", 
                    {"Ref" : "AWS::Region"},
                    " --http-proxy http://proxy.aws.xxxxxx.local:8080 \n",
                "</script>\n"
                ]]
            }
        }
Источник

Ответы (1)

avatar
craigcaulfield
17 октября 2018 в 03:51
0

Я получал ту же ошибку, вплоть до тех же номеров строк ошибок. В моем случае я запускал свой экземпляр в частную подсеть, а затем пытался выполнить различные команды конфигурации и загрузки с S3 (без конечной точки VPC) в UserData. Но в моей подсети не было маршрута к Интернету. Чтобы исправить это, я сделал:

  • В моем шаблоне CloudFormation добавлена ​​ассоциация таблицы маршрутов с таблицей маршрутов, указывающей на шлюз NAT:
AssocANat:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
DependsOn:
  - SubnetA
  - RouteTableNATGatewayA
Properties:
  RouteTableId: !Ref RouteTableNATGatewayA
  SubnetId: !Ref SubnetA
  • Добавлено правило группы безопасности для исходящего трафика, разрешающее TCP 443 и любые другие данные, необходимые моим UserData:
SecurityGroupEgress:
- IpProtocol: tcp
  FromPort: '443'
  ToPort: '443'
  CidrIp: 0.0.0.0/0