首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python如何从CI Jenkin服务器(它每晚运行我的测试)中的AWS参数存储中获取数据

使用Python如何从CI Jenkin服务器(它每晚运行我的测试)中的AWS参数存储中获取数据
EN

Stack Overflow用户
提问于 2020-03-13 06:29:36
回答 1查看 192关注 0票数 0

我花了很多时间在网上搜索这个答案。

我知道如何在PC上本地运行存储在C:\Usersname.aws配置文件中的代码时获取QA环境aws_access_key_id和aws_secret_access_key

代码语言:javascript
复制
[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代码一样,我实际上看到了正确的值。

代码语言:javascript
复制
    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系统管理器参数存储中获取参数

代码语言:javascript
复制
secretsExternalId: 'DEF',
secretsRoleArn: 'arn:aws:ssm:us-east-1:12345678:parameter/A/B/secrets/C',
EN

回答 1

Stack Overflow用户

发布于 2020-05-31 00:31:39

在CI服务器上安装boto3和botocore。正如您所提到的,CI(Jenkins)也在AWS上运行。您可以将角色附加到提供SSM读取权限的CI服务器(EC2)。

下面是该角色的权限示例。

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:Describe*",
                "ssm:Get*",
                "ssm:List*"
            ],
            "Resource": "*"
        }
    ]
}

从python代码中,您可以简单地调用ssm来获取参数值。

代码语言:javascript
复制
$ export parameter_value1="/path/to/ssm/parameter_1"
$ export parameter_value2="/path/to/ssm/parameter_2"
代码语言:javascript
复制
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']))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60662639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档