5

我想将 AWS System Managers Store Parameters 与我的 CodeDeploy 管道一起使用,从而放弃我在 Lightsail 上的最后一次提交。

✅ 1. 我创建了一个 SSM 参数:MySecureString.

参数设置为启用SecureStringKMS 加密设置Actual accountalias/aws/ssmID。

SecureString的设置为:postgres://user:password@endpoint.rds.amazonaws.com:5432/myDatabase

✅ 2. 我创建了 CodeDeploy 实例使用的 IAM 策略

前往 IAM 并创建了一个附加到的 JSON 策略MySpecificCodeDeployUser

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "ssm:GetParameter"
            ],
            "Resource": [
                "arn:aws:kms:*:<accountID>:key/alias/aws/ssm",
                "arn:aws:ssm:us-east-1:<accountID>:parameter/MySecureString"
            ]
        }
    ]
}

✅ 3. 测试MySpecificFCodeDeployUser访问 SSM MySecureString

键入aws configure以登录MySpecificFCodeDeployUser并尝试在我的本地计算机上运行此命令:

aws --region=us-east-1 ssm get-parameter --name MySecureString --with-decryption --query Parameter.Value
RETURN ==> "postgres://user:password@endpoint.rds.amazonaws.com:5432/myDatabase"

请注意,删除 IAM 策略会给我一个未经授权的请求,因此 IAM 策略是正确的。

4. 添加MySecureString到 CodeDeploy 执行的脚本中:

编辑我的AfterInstall脚本appspec.yml以添加:

aws --region=us-east-1 ssm get-parameter --name MySecureString --with-decryption --query Parameter.Value >> .env

FAILED Build给了我一个stderr

[stderr] An error occurred (AccessDeniedException) when calling the GetParameter operation: User: arn:aws:sts::<id>:assumed-role/AmazonLightsailInstanceRole/<id> is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:<id>:parameter/MySecureString

我看到 Lightsail 实例AWSServiceRoleForLightsailhttps://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-using-service-linked-roles的服务相关角色继承。

有没有办法向我的 lightsail 实例添加新策略,因为它似乎不是 CodeDeploy 用户需要它?

4

1 回答 1

1

有没有办法向我的 lightsail 实例添加新策略,因为它似乎不是 CodeDeploy 用户需要它?

可悲的是,你不能这样做。要使 lightail 实例上的应用程序能够与 AWS 服务交互,您必须自己完成,方法是设置.aws凭证并让您的应用程序使用该凭证(如果您使用 AWS 开发工具包则自动完成)。

Lightsail 实例不支持基于用户的实例角色。为此,您需要常规 EC2 实例,如下所述:

于 2021-07-27T23:10:56.427 回答