Как вы правильно указали, это метаданные экземпляра .
Метаданные знают формат . Таким образом, если boto3 не может найти учетные данные на шагах с 1 по 7, он проверит метаданные.
Процесс проверки довольно прост. Вы можете сделать это самостоятельно из экземпляра или своей собственной программы.
Например, чтобы вручную получить учетные данные с помощью curl
, вы можете сделать следующее:
curl http://169.254.169.254/latest/meta-data/iam/info
, который выведет (пример):
{
"Code" : "Success",
"LastUpdated" : "2020-06-19T05:08:31Z",
"InstanceProfileArn" : "arn:aws:iam::xxxxxxx:instance-profile/EC2managementRole",
"InstanceProfileId" : "AIPAI2GXQHM47WJLA2OTI"
}
Обратите внимание, что есть arn профиля экземпляра.
Вы также можете использовать
curl http://169.254.169.254/latest/meta-data/iam/security-credentials
, что дает имя роли , связанное с вашим профилем экземпляра:
EC2managementRole
Затем, чтобы получить фактическое AccessKeyId
, SecretAccessKey
и Token
, которые вы можете использовать в сеансе boto3 для получения разрешения на службы aws, вы можете сделать:
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2managementRole
, что дает:
{
"Code" : "Success",
"LastUpdated" : "2020-06-19T05:08:04Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIASZHPM3xxxxxxxxxxxxxxx",
"SecretAccessKey" : "ri7u3mK+ZMvork0xxxxxxxxxxxxxx",
"Token" : "IQoJb3JpZ2luX2VjEIb//////////wEaCXVzLWVhc3QtMSJIMEYCIQDcmeIpspYPhLb7Ba/iNxYxxxxxxxxxxxxxxxvJCR4DqVK2+Ai/Kr0DCP7//////////wEQAhoMMTkxNjI4MTA2Mjg3Igz2SUVJuLKyZkc6U10qkQNcTZxwRIC1tSErfXRjKPrlpV6wIr478lujrBGHef6vtoVAy8X+HDRk3kWEmqKWscZFFIBLDm+vpsec9aIen70XZS4zNFyygIFW7NcTV3p6gggqR6ed3jycxrcaD7IAk8HVTbA6SqfPgE/B8VLwF9u9zEvPC3km7oxxxxxxxxxxxxxxxxxxxxxxxxxJDaJDaAStICJ0QgY10zOqDhHR7ENTEveKE5g+3RYeq4/GUCLkMmyI0f6PWxZ6OHrmORRnykYsUjuFvVjuODkrXF7JvZEAz/PkHCJJoXqf2aqZGyJ7J4jYHQZTU0QUg2IGZxZIBvP3g6a3+r8/74u//xebZmUwGn0YfvL4PZgsrJ7JUl40QjQ+iCab8i4rffho4f/g/em3u+DbZjGzWnQ3EhKYdVoMR//9yJH/TXzRTxNeoLeIXatpc6ftSNcP4aacqZs3TVAYb+geAzpLSlSrWUSy32Bdx31kGFBk/q5ErQ56S8zWJ/PN/NbbvSqUDYOW9ub0sBvKWAT7zDPkLH3BTrqAc6HExLUuRlUM9s5EhTXDkl3NpRJ45J4zvyxiEykqxbPACpG1SdgxxxxxxxxxxxxxxxxxxxxxxB/8eN040f/NgEpSltFXLWS6goIeuIMouYwdA8qBigwwfFF/02555eUJQWH0r+ReIZF7EQmTfdkBZKRqsKz1cVfHcscEZwD86MpfY7DU31Pi4eh9J6M2sgU6CGylAalYXAzPPgeCpQCkCGyKFHXs8D22lt2qCJxaQni7GqBeronHvVmxX9wzTxCWlm4Or423Pccqh3Lw6g+PfLB3SViSPb4aEw==",
"Expiration" : "2020-06-19T11:43:31Z"
}
или ярлык , который даст тот же результат, что и выше:
curl http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance
Здесь важно то, что служба метаданных будет refre sh учетных данных . Поэтому, когда вы получаете учетные данные из метаданных, вы всегда получаете действительные.