Я пытаюсь настроить свой экземпляр EC2 так, чтобы скрипт мог получить значение секрета, например, во время загрузки.
Я создал экземпляр EC2 из CentOS AMI и секрет в Secrets Manager.Секрет использует ключ от KMS.
Затем я определил роль IAM с соответствующими политиками для расшифровки секрета и назначил эту роль экземпляру EC2.
В этом экземпляре я вижу AccessKeyId и SecretAccessKey в метаданныхс помощью этой команды (Decrypt-Secret - имя роли):
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/Decrypt-Secrets/
{
"Code" : "Success",
"LastUpdated" : "2018-12-06T09:45:55Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "AAAAAAAAAAAAAA",
"SecretAccessKey" : "BBBBBBBBBBBBBBBBBBB",
"Token" : "...",
"Expiration" : "2018-12-06T16:11:24Z"
}
Затем я настраиваю aws cli:
$ aws configure
AWS Access Key ID [None]: AAAAAAAAAAAAAA
AWS Secret Access Key [None]: BBBBBBBBBBBBBBBBBBB
Default region name [us-east-1]: us-east-1
Default output format [None]:
И пытаюсь получить секрет:
$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:1234567890:secret:my-secret-aaaaa
An error occurred (UnrecognizedClientException) when calling the GetSecretValue operation: The security token included in the request is invalid.
Насколько я понимаю, ошибка заключается в том, что я не использую правильный KeyID и AccessKey.Но я не понимаю, почему.
Я также пытался создать пользователя IAM, который использует ту же политику, и когда я указываю KeyID и AccessKey этого пользователя, он работает, я могу получить секрет.Но я должен указать идентификатор и ключ вручную, и моя цель - сценарий для автоматического получения секрета.
Чего мне не хватает?