创建AWS资源 - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建AWS资源

本主题是教程的一部分,该教程演示了如何使用AWS SDK for JavaScript. 要开始使用本教程,请参阅创建和使用 Lambda 函数

本教程需要以下资源。

  • 具有未经身份验证的用户角色的 Amazon Cognito 身份池。

  • 具有 DynamoDB 和 Lambda 权限的 IAM 策略附加到未经身份验证的用户角色。

  • 用于托管浏览器 HTML 和脚本页面的 Amazon S3 存储桶以及 Lambda 函数。

您可以手动创建这些资源,但我们建议使用AWS Cloud Development Kit (AWS CDK)(AWS CDK) 如本教程中所述。

创建AWS使用AWS CloudFormation

AWS CloudFormation 让您能够以可预测、可重复的方式创建和预置 AWS 基础设施部署。有关 的更多信息AWS CloudFormation,请参阅AWS CloudFormation开发人员指南。.

创建AWS CloudFormation堆栈:

  1. 安装和配置AWS CLI按照AWS CLI用户指南.

  2. 创建一个名为的文件describe-stack-resources.js在项目文件夹的根目录中。

  3. 创建一个名为的文件setup.yaml在项目文件夹的根目录中,复制内容此处GitHub进入它。

    注意

    这些区域有:AWS CloudFormation模板是使用AWS CDK可用此处GitHub. 有关 AWS CDK 的更多信息,请参阅 AWS Cloud Development Kit (AWS CDK) 开发人员指南

  4. 从命令行运行以下命令,同时将STACK_NAME使用堆栈的唯一名称。

    重要

    堆栈名称在AWS地区和AWSaccount. 最多可以指定 128 个字符,并允许使用数字和连字符。

    aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM

    有关create-stack命令参数,请参阅AWS CLI命令参考指南,以及AWS CloudFormation用户指南.

  5. 将以下代码复制并粘贴到describe-stack-resources.js.

    // Load the AWS SDK for Node.js const { CloudFormationClient, DescribeStackResourcesCommand, CreateStackCommand, DescribeStacksCommand } = require("@aws-sdk/client-cloudformation"); // Create S3 service object const cloudformation = new CloudFormationClient(); var params = { StackName: process.argv[2] } const getVariables = async () => { try { const data = await cloudformation.send( new DescribeStacksCommand({StackName: params.StackName})); console.log('Status: ', data.Stacks[0].StackStatus); if (data.Stacks[0].StackStatus == "CREATE_COMPLETE") { const data = await cloudformation.send( new DescribeStackResourcesCommand({StackName: params.StackName}) ); for (var i = 0; i < data.StackResources.length; i++) { var obj = data.StackResources[i].ResourceType; if (obj == "AWS::IAM::Policy") { const IDENTITY_POOL_ID = data.StackResources[i].LogicalResourceId; console.log("IDENTITY_POOL_ID:", IDENTITY_POOL_ID); var identity_pool_id = IDENTITY_POOL_ID; } if (obj == "AWS::S3::Bucket") { const BUCKET_NAME = data.StackResources[i].PhysicalResourceId; console.log("BUCKET_NAME:", BUCKET_NAME); var bucket = BUCKET_NAME; } if (obj == "AWS::IAM::Role") { const IAM_ROLE = data.StackResources[i].StackId; console.log("IAM_ROLE:", IAM_ROLE); var iam_role = IAM_ROLE; } } } else{ console.log('Stack not ready yet. Try again in a few minutes.') } }catch (err) { console.log("Error listing resources", err); } } ; getVariables();

    这个代码是可用的此处GitHub.

  6. 从命令行运行以下命令,同时将STACK_NAME使用堆栈的唯一名称。

    node describe-stack-resources.js STACK_NAME

    记下IAM_ROLEIDENTITY_POOL_ID, 和BUCKET_NAME在命令行中返回,因为你在本教程中需要它们。