我正在进行一个项目,该项目要求AWS Glue Python脚本访问AWS Secrets Manager。
我试着通过IAM授予Glue权限,但我不知道怎么做;我可以看到显示Lambda有访问权限的权限字符串,但我看不到编辑它们的方法。
我试着创建一个拥有正确权限的新角色,但当我去附加时,它似乎消失了。。。
我的备用方法是通过一个小Lambda获取秘密,并通过S3将其转换为Glue。。。但这应该是直接可行的。欢迎您提供任何帮助!
您可能需要将SecretsManagerReadWrite策略添加到与AWS Glue关联的IAM角色中。请检查,我们在AWS Glue中使用了机密管理器。
将策略添加到与AWS Glue关联的IAM角色后,请添加以下代码片段以读取机密管理器的凭据:
# Getting DB credentials from Secrets Manager
client = boto3.client("secretsmanager", region_name="us-west-2")
get_secret_value_response = client.get_secret_value(
SecretId="mysecrets-info" <--name as configured in secrets manager
)
secret = get_secret_value_response['SecretString']
secret = json.loads(secret)
uname = secret.get('username')
pwd = secret.get('password')
url = secret.get('host')
顺便说一句,您需要成为AWS管理员用户,才能修改IAM角色。如果您是超级用户,请联系管理团队将策略添加到IAM。
SecretsManagerReadWrite策略并没有只向Lambda授予权限。我认为您可能正在查看第二条语句,该语句授予Role创建Lambdas的权限(用于创建Lambda以轮换机密(。
查看Glue关于设置ETL作业的博客文章,他们还说您只需要将SecretsManagerReadWrite策略添加到Glue角色中。然而,他们也说这只是为了测试,你应该使用一个只授予所需必要权限的策略(例如,使用一个授予secretsmanager:GetSecretValue的内联策略,其中Resource是有问题的秘密(。
您实际上并没有说出您看到的错误信息。这可能有助于找出问题所在。