通过cloudformation将access_key和secret_key传递到ec2实例时会发生什么?

时间:2018-08-21 13:56:08

标签: amazon-web-services amazon-cloudformation

当我通过cloudformation模板将secret_key和access_key传递到USER DATA部分中的ec2实例时,会发生什么,这与没有实例创建实例有何不同。

所以我正在尝试使用以下模板,它可以很好地创建资源。但是我无法使用在ec2实例中创建的用户登录。我知道我一定在这里犯了一些错误。

    "Resources":{
    "myuser" : {
   "Type" : "AWS::IAM::User",
   "Properties" : {
   "UserName":"naxi143",
      "Path" : "/",
      "LoginProfile" : {
         "Password" : "143@Naxi143"
      }
      }
    },
      "myaccesskey" : {
   "Type" : "AWS::IAM::AccessKey",
   "Properties" : {
      "UserName" : { "Ref" : "myuser" }
   }
},
    "WebServerGroup" : {
          "Type" : "AWS::AutoScaling::AutoScalingGroup",
          "Properties" : {
            "VPCZoneIdentifier" : { "Ref" : "Subnets" },  
            "LaunchConfigurationName" : { "Ref" : "LaunchConfig" },
            "MinSize" : "1",
            "MaxSize" : "1"
            }
      },
    "LaunchConfig" : {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Properties" : {
        "ImageId" :"ami-40142d25",
        "SecurityGroups" : { "Ref" : "WebServerSecurityGroup" },
        "InstanceType" : { "Ref" : "InstanceType" }, "UserData" : {
         "Fn::Base64" : {
            "Fn::Join" : [
               "", [
                  "ACCESS_KEY=", {
                     "Ref" : "myaccesskey"
                  },
                  "&",
                  "SECRET_KEY=",
                  {
                     "Fn::GetAtt" : [
                        "myaccesskey",
                        "SecretAccessKey"
                     ]
                  }
               ]
            ]
         }
        }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

IAM用户用于访问AWS控制台,访问密钥用于访问API。要通过SSH进入实例(或Windows的RDP),您需要创建ssh密钥对(在Ec2控制台中),然后可以将此密钥附加到实例。

可以以两种方式使用用户数据。第一种在我的经验中比较常见

  1. 它可以是仅在实例启动时才执行的Shell脚本。您可以使用它来安装软件并在启动时执行其他操作。
  2. 用户数据可以是cloud-init指令(我认为仅适用于Amazon Linux)。
  3. 您可以将所需的任何配置数据放入用户数据中,然后从应用程序中通过169.254.169.169/user-data/latest访问它们。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html