我花了很多时间在网上搜索这个答案。
我知道如何在PC上本地运行存储在C:\Usersname.aws配置文件中的代码时获取QA环境aws_access_key_id和aws_secret_access_key
[profile qa]
aws_access_key_id = ABC
aws_secret_access_key = XYZ
[profile crossaccount]
role_arn=arn:aws:ssm:us-east-1:12345678:parameter/A/B/secrets/C
source_profile=qa就像这段python代码一样,我实际上看到了正确的值。
import boto3
session = boto3.Session(profile_name='qa')
s3client = session.client('s3')
credentials = session.get_credentials()
accessKey = credentials.access_key
secretKey = credentials.secret_key
print("accessKey= " + str(accessKey) + " secretKey="+ secretKey)A)当我的代码在CI上运行时,我如何获得这些参数?我是否将"aws_access_key_id“和"aws_secret_access_key”作为参数传递给代码?
B)我如何准确地承担角色并从AWS系统管理器参数存储中获取参数
secretsExternalId: 'DEF',
secretsRoleArn: 'arn:aws:ssm:us-east-1:12345678:parameter/A/B/secrets/C',发布于 2020-05-31 00:31:39
在CI服务器上安装boto3和botocore。正如您所提到的,CI(Jenkins)也在AWS上运行。您可以将角色附加到提供SSM读取权限的CI服务器(EC2)。
下面是该角色的权限示例。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:Describe*",
"ssm:Get*",
"ssm:List*"
],
"Resource": "*"
}
]
}从python代码中,您可以简单地调用ssm来获取参数值。
$ export parameter_value1="/path/to/ssm/parameter_1"
$ export parameter_value2="/path/to/ssm/parameter_2"import os
import boto3
session = boto3.Session(region_name='eu-west-1')
ssm = session.client('ssm')
MYSQL_HOSTNAME = os.environ.get('parameter_value1')
MYSQL_USERNAME = os.environ.get('parameter_value2')
hostname = ssm.get_parameter(Name=parameter_value1, WithDecryption=True)
username = ssm.get_parameter(Name=parameter_value2, WithDecryption=True)
print("Param1: {}".format(hostname['Parameter']['Value']))
print("Param2: {}".format(username['Parameter']['Value']))https://stackoverflow.com/questions/60662639
复制相似问题