首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS系统管理器+ CodeDeploy + Lightsail

AWS系统管理器+ CodeDeploy + Lightsail
EN

Stack Overflow用户
提问于 2021-07-20 14:45:49
回答 1查看 299关注 0票数 5

我想用我的CodeDeploy管道来使用AWS系统管理器存储参数,放弃我最后一次提交Lightsail。

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

参数在SecureString上设置,KMS加密设置在Actual account上,alias/aws/ssm作为ID。

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

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

转到IAM并创建了一个附加于MySpecificCodeDeployUser的JSON策略:

代码语言:javascript
复制
{
    "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 access SSM MySecureString

aws configure键入为MySpecificFCodeDeployUser并尝试在本地计算机上运行以下命令:

代码语言:javascript
复制
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策略是正确的。

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

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

代码语言:javascript
复制
aws --region=us-east-1 ssm get-parameter --name MySecureString --with-decryption --query Parameter.Value >> .env

给了我一个FAILED Buildstderr

代码语言:javascript
复制
[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实例继承自服务链接的角色,AWSServiceRoleForLightsailus/articles/amazon-lightsail-using-service-linked-roles

是否有一种方法可以为我的lightsail实例添加一个新策略,因为它似乎不是CodeDeploy用户需要的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-27 23:10:56

是否有一种方法可以为我的lightsail实例添加一个新策略,因为它似乎不是CodeDeploy用户需要的?

可悲的是,你不能做这个。为了使您在lightsail实例上的应用程序能够与AWS服务交互,您必须自己进行交互,方法是设置.aws凭据并让应用程序使用它(如果使用AWS,则自动完成)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68456891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档