AWS Lambda get-layer-version 跨账号需要使用AWS SDK for JavaScript中的STS (Security Token Service)服务进行身份验证。可以通过以下步骤来实现:
在源AWS账号中创建一个包含layer及其内容的文件夹,并将其发布成AWS Lambda层。并将该Lambda层授权给接受方AWS账号。
在接受方AWS账号中,创建一个IAM角色并授予该角色AWSLambdaBasicExecutionRole策略。
在接受方AWS账号中,使用扮演角色(Switch role)功能检索、保持和使用源AWS账号中的临时凭证。
在接受方AWS账号中,使用以下代码示例的方式访问Lambda层:
const AWS = require('aws-sdk');
const sts = new AWS.STS({ region: 'region' });
sts.assumeRole({
RoleArn: 'arn:aws:iam::123456789012:role/lambda-role',
RoleSessionName: 'test-lambda-session',
}, (err, data) => {
if (err) {
console.log(err, err.stack);
} else {
const lambda = new AWS.Lambda({
accessKeyId: data.Credentials.AccessKeyId,
secretAccessKey: data.Credentials.SecretAccessKey,
sessionToken: data.Credentials.SessionToken,
region: 'region'
});
lambda.getLayerVersion({
LayerName: 'layer-name'
}, (err, data) => {
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
}
});
}
});
请注意,此代码示例仅用于说明如何使用跨帐户身份验证访问Lambda层。根据您的具体情况,您可能需要进行适当的更改以购买更好的速度或兼容性。