【发布时间】:2019-11-27 08:47:10
【问题描述】:
我仍在学习使用 AWS Lambda 函数。我使用 Amplify 框架生成了我的。我使用的 Lambda 函数需要访问 AppSync API。因此它有以下中间件:
const tapRoute = f => R.tap(route => route.use(f));
const hydrateClient = tapRoute(async function(req, res, next) {
try {
const url = process.env.API_SAYMAPPSYNCAPI_GRAPHQLAPIENDPOINTOUTPUT;
const region = process.env.REGION;
AWS.config.update({
region,
credentials: new AWS.Credentials(
process.env.AWS_ACCESS_KEY_ID,
process.env.AWS_SECRET_ACCESS_KEY,
process.env.AWS_SESSION_TOKEN
),
});
const credentials = AWS.config.credentials;
const appsyncClient = new AWSAppSyncClient(
{
url,
region,
auth: {
type: 'AWS_IAM',
credentials,
},
disableOffline: true,
},
{
defaultOptions: {
query: {
fetchPolicy: 'network-only',
errorPolicy: 'all',
},
},
}
);
const client = await appsyncClient.hydrated();
req.client = client;
next();
} catch (error) {
console.log(error);
next(error);
}
});
如您所见,我需要访问环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和AWS_SESSION_TOKEN。当我在云中运行该函数时,它会自动获取这些变量的值。我怎样才能在本地获得它们?我需要使用哪个访问密钥以及如何获取其秘密访问密钥和会话令牌?
【问题讨论】:
-
就您需要的访问密钥和秘密而言 - 来自具有足够权限以访问您所需资源的用户,从您的代码来看,这似乎是应用同步。
标签: amazon-web-services aws-lambda aws-sdk amazon-iam aws-amplify