要使Lambda函数能够通过VPC接口端点访问密钥管理服务,需要更改Lambda函数的安全组和子网设置,并更新Lambda函数的执行角色以允许访问密钥管理服务。
以下是示例代码:
import boto3
def lambda_handler(event, context):
# Create Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name='us-west-2'
)
# Get secret value
secret_value = client.get_secret_value(
SecretId='my_secret'
)
# Do something with secret value
return secret_value['SecretString']
在Lambda函数执行角色的权限策略中添加以下代码,以允许访问密钥管理服务:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToSecretsManager",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": [
"arn:aws:secretsmanager:us-west-2:123456789012:secret:my_secret"
]
}
]
}
确保Lambda函数的安全组和子网设置允许与密钥管理服务的端口通信。可以使用以下代码示例更新Lambda函数的子网和安全组设置:
import boto3
def lambda_handler(event, context):
lambda_client = boto3.client('lambda')
lambda_subnet_id = 'subnet-xxxxxxxxxxxx'
lambda_security_group_id = 'sg-xxxxxxxxxxxx'
# Update Lambda function configuration
response = lambda_client.update_function_configuration(
FunctionName=context.function_name,
VpcConfig={
'SubnetIds': [lambda_subnet_id],
'SecurityGroupIds': [lambda_security_group_id]
}
)
return response