Невозможно получить параметры в хранилище параметров aws

Я подхожу к AWS.

Я пытаюсь сохранить параметр в хранилище параметров моего экземпляра EC2, и я хотел бы получить их для помещения в переменную среды на этапе AfterInstall в Codedeploy. Развертывание работает, но я все равно не могу получить параметр.

Я пытался следовать этому руководству 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"
    }
]}

Я прикрепил политику к «CodeDeployServiceRole», к которой также прикреплен «AWSCodeDeployRole».

Наконец, в моем скрипте 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.

Может ли кто-нибудь сказать мне, что я не так?

Спасибо


person Simone Biffi    schedule 11.09.2017    source источник
comment
Вы что-то сохранили в хранилище параметров?   -  person Dunedan    schedule 11.09.2017
comment
Да, я сохраняю параметр MySecureSQLPassword со значением abcd и вручную набираю String из консоли управления EC2. Я сомневаюсь, что codedeploy не имеет разрешения на получение параметра, но я не могу найти ничего, что могло бы мне помочь, и я не так уверен в этой теме.   -  person Simone Biffi    schedule 11.09.2017
comment
И я полагаю, вы заменили <myId> идентификатором своего аккаунта AWS?   -  person Dunedan    schedule 11.09.2017
comment
@Dunedan, конечно! Не может быть проблема с разрешением? Когда codedeploy запускает событие afterInstall и выполняет сценарий .ssh, кто выполняет действие? Спасибо   -  person Simone Biffi    schedule 11.09.2017
comment
@SimoneBiffi Если вы не укажете запуск от имени пользователя в файле appspec для CodeDeploy, по умолчанию он будет запускаться от имени пользователя root.   -  person binbinlu    schedule 14.09.2017


Ответы (2)


Убедитесь, что IAM-политика «ParameterStorePolicy» прикреплена к профилю экземпляра EC2 экземпляра, который вы развертываете.

Чтобы убедиться, что у экземпляра есть правильные разрешения, вы можете выполнить одно из следующих действий:

  1. Запустите эту команду CLI непосредственно на экземпляре и убедитесь, что значение расшифровано:

aws ssm get-parameters --region us-east-2 --names MySecureSQLPassword --with-decryption --query Parameters [0]. Значение

  1. Войдите в Консоль AWS, затем перейдите на страницу https://policysim.aws.amazon.com/home/index.jsp?#roles находит роль вашего экземпляра EC2 и имитирует доступ этой роли к этому параметру.
person JimmyL    schedule 25.09.2018

Есть одна вещь, которую вы могли бы попробовать, - это получить GetParameters из экземпляра напрямую, без запуска CodeDeploy (возможно, просто запустив этот сценарий Afterinstall непосредственно из экземпляра). Если вы можете получить, то это означает что-то, связанное с запущенным пользователем CodeDeploy, в противном случае это должна быть проблема с настройкой параметров.

Спасибо, Бинбин

person binbinlu    schedule 14.09.2017