【问题标题】:Unable to get parameters in Parameter Store aws无法在 Parameter Store aws 中获取参数
【发布时间】:2018-02-19 16:44:42
【问题描述】:

我现在正在接近 aws。

我正在尝试将参数存储在我的 EC2 实例的 Parameter Store 中,我会在 Codedeploy 的 AfterInstall 步骤中将它们放入环境变量中。 部署工作,但我无法获取参数。

我尝试按照本教程进行操作https://aws.amazon.com/it/blogs/mt/use-parameter-store-to-securely-access-secrets-and-config-data-in-aws-codedeploy/

我创建的策略“ParameterStorePolicy”如下:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ssm:DescribeParameters"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ssm:GetParameters"
        ],
        "Resource": [
            "arn:aws:ssm:us-east-2:<myId>:parameter/MySecureSQLPassword"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-east-2:<myId>:alias/aws/ssm"
    }
]}

我将策略附加到还附加了“AWSCodeDeployRole”的“CodeDeployServiceRole”。

最后在我的脚本“Afterinstall.sh”中我写了以下代码:

cd /home/ubuntu/pypi
export PIPPO=$(aws ssm get-parameters --region us-east-2 --names 
MySecureSQLPassword --with-decryption --query Parameters[0].Value)
echo $PIPPO >testPippo.txt

结果是一个空的 testPippo.txt 文件。

谁能告诉我我做错了什么?

谢谢

【问题讨论】:

  • 你在参数存储中存储了一些东西吗?
  • 是的,我使用值“abcd”存储参数“MySecureSQLPassword”并从我的 EC2 管理控制台手动键入“String”。我怀疑 codedeploy 没有获取参数的权限,但我找不到任何可以帮助我的东西,而且我对这个话题不太自信。
  • 我猜您将&lt;myId&gt; 替换为您的 AWS 账户 ID?
  • @Dunedan 当然!不能是权限问题吗?当 codedeploy 触发 afterInstall 事件并执行 .ssh 脚本时,执行该操作的是谁?谢谢
  • @SimoneBiffi 如果您没有在 CodeDeploy 的 appspec 文件中指定以用户身份运行,则默认以 root 身份运行。

标签: amazon-web-services amazon-ec2 aws-code-deploy


【解决方案1】:

检查“ParameterStorePolicy”IAM 策略是否已附加到您要部署到的实例的 EC2 实例配置文件。

要确认实例是否具有正确的权限,您可以执行以下任一操作:

  1. 直接在实例上运行该 CLI 命令并确认该值已解密:

aws ssm get-parameters --region us-east-2 --names MySecureSQLPassword --with-decryption --query Parameters[0].Value

  1. 登录 AWS 控制台,然后转到 https://policysim.aws.amazon.com/home/index.jsp?#roles 找到您的 EC2 实例角色并模拟该角色对该参数的访问。

【讨论】:

    【解决方案2】:

    您可以尝试一件事,即直接从实例获取参数而不运行 CodeDeploy(可能只是直接从实例运行该 Afterinstall 脚本)。如果能搞定,那就说明和CodeDeploy运行用户有关,否则应该是Parameters设置的问题。

    谢谢, 彬彬

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2021-10-26
      • 2020-03-18
      • 2022-10-09
      • 2020-02-08
      • 2020-07-01
      相关资源
      最近更新 更多