例如,可以使用以下代码将 AWS Secrets Manager 返回的凭证信息存储到环境变量中:
# Retrieve the secret
import boto3
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name='us-west-2'
)
get_secret_value_response = client.get_secret_value(
SecretId='my-secret-name'
)
# Parse the secret JSON string and set environment variables
secret = json.loads(get_secret_value_response['SecretString'])
for key, value in secret.items():
os.environ[key] = value
接下来,在 Flyway 配置文件中,可以使用 $ENV 或 ${env:} 来引用这些环境变量:
flyway.url=jdbc:${env:DB_URL}
flyway.user=${env:DB_USERNAME}
flyway.password=${env:DB_PASSWORD}
AWS SDK for Java 2.x 提供了一个 Secrets Manager Integration,可以让开发者在 Flyway/Hikari 中直接使用 AWS Secrets Management。可以通过以下方式添加 AWS SDK for Java 2.x 到项目中:
Maven:
software.amazon.awssdk
secretsmanager
2.x.x
Gradle:
implementation 'software.amazon.awssdk:secretsmanager:2.x.x'
然后,在 Flyway 配置文件中,可以使用以下配置:
flyway.url=jdbc:postgresql://${secretsmanager:my-db-secret/dbhost}:${secretsmanager:my-db-secret/dbport}/${secretsmanager:my-db-secret/dbname}
flyway.user=${secretsmanager:my-db-secret/username}
flyway.password=${secretsmanager:my-db-secret/password}
注意,此方法需要指定