我仍在学习使用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
。当我在云中运行该函数时,它会自动获取这些变量的值。我怎样才能在当地得到它们?我需要使用哪个访问密钥,以及如何获取其秘密访问密钥和会话令牌?
答案 0 :(得分:2)
如果已配置Error: Cannot find module '/home/ahdy/Workspace/Wally/wallcraft/public/uploads/ak47456193147469824_n.jpg'
文件,则无需显式设置它们。
如果要配置此文件,最简单的方法是简单地安装aws-cli并运行~/.aws/credentials
。系统将提示您输入一些值,包括aws configure
和AWS_ACCESS_KEY_ID
如果未配置此文件,则可以自己在环境变量中设置这些值。
您可以通过转到AWS控制台-> IAM->用户->选择您的用户->安全凭证->访问密钥来获取这些值。然后单击“创建访问密钥”,然后下载或写下这些值,因为AWS_SECRET_ACCESS_KEY
仅在创建期间可见。另一方面,AWS_SECRET_ACCESS_KEY
总是可见的,但是如果没有这个秘密,它就毫无用处。
AWS_ACCESS_KEY_ID
。如果不是,则可以忽略此值。
<仅MFA>
不过,如果您使用的是MFA,则需要使用AWS_SESSION_TOKEN
来获取此值,就像这样:
aws-cli
然后,要设置临时凭据,请再次运行aws sts get-session-token --serial-number arn:aws:iam::account-id-number:mfa/your-user --token-code MFAToken
,用新的临时值替换aws configure
和AWS_ACCESS_KEY_ID
的值。
最后,要设置AWS_SECRET_ACCESS_KEY
,请运行AWS_SESSION_TOKEN
请记住,在云中运行时,这些凭据不会按照您所说的那样加载。改为使用IAM角色。