请求AWS Glue Job Spark脚本:从Secret Manager获取密钥
从AWS Secrets Manager获取密钥的Glue Job Spark脚本
以下是可直接在AWS Glue Job中运行的Spark脚本,用于从Secrets Manager提取敏感凭证,适用于数据库访问、API密钥调用等场景:
import sys from awsglue.context import GlueContext from awsglue.job import Job from awsglue.utils import getResolvedOptions import boto3 import json # 初始化Glue上下文 args = getResolvedOptions(sys.argv, ['JOB_NAME']) glueContext = GlueContext(spark.sparkContext) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME'], args) # 定义Secrets Manager密钥获取函数 def get_secret(secret_name, region_name="us-east-1"): session = boto3.session.Session() client = session.client( service_name='secretsmanager', region_name=region_name ) try: response = client.get_secret_value(SecretId=secret_name) except Exception as e: # 捕获权限不足、密钥不存在等异常 raise e # 解析JSON格式的密钥内容(根据实际存储格式调整) return json.loads(response['SecretString']) # 业务逻辑示例 if __name__ == "__main__": try: # 替换为你的密钥名称和区域 secret_name = "prod/mysql-credentials" target_region = "us-west-2" # 获取密钥 credentials = get_secret(secret_name, target_region) # 提取具体凭证字段(与你的密钥存储结构对应) db_user = credentials['username'] db_pass = credentials['password'] db_endpoint = credentials['host'] # 后续可添加数据库连接、数据处理等逻辑 print(f"成功获取凭证:用户{db_user},端点{db_endpoint}") job.commit() except Exception as e: print(f"执行失败:{str(e)}") job.commit()
核心注意事项
- IAM权限配置:确保Glue Job使用的IAM角色包含
secretsmanager:GetSecretValue权限,示例策略片段如下:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:你的区域:你的账号ID:secret:你的密钥名称-*" } ] } - 密钥格式适配:若你的密钥为纯文本而非JSON,直接返回
response['SecretString']即可,无需JSON解析。 - 区域一致性:脚本中的区域需与Secrets Manager密钥所在区域保持一致。
内容的提问来源于stack exchange,提问作者Johnny Bravo
相关产品推荐
相关产品推荐

