本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS CloudFormation 管理资源
您可以使用 AWS CloudFormation 来管理 AWS SimSpace Weaver 资源。AWS CloudFormation 是一项单独的 AWS 服务,可帮助您以代码形式指定、配置和管理 AWS 基础设施。通过 AWS CloudFormation 创建一个 JSON 或 YAML 文件,称为模板。您的模板指定了基础设施的详细信息。AWS CloudFormation 使用您的模板将基础架构配置为一个单元,称为堆栈。在删除堆栈时,您可以同时让 AWS CloudFormation 删除堆栈中的所有数据。您可以使用标准源代码管理流程来管理模板(例如,在像 Git
模拟资源
在 AWS 中,resource 是您可使用的实体。示例包括 Amazon EC2 实例、Amazon S3 存储桶或 IAM 角色。SimSpace Weaver 模拟是一种资源。在配置中,您通常在表单 AWS::
中指定 AWS 资源。对于 SimSpace Weaver,您可以将模拟资源指定为 service
::resourceAWS::SimSpaceWeaver::Simulation
。有关您在 AWS CloudFormation 中的模拟资源的更多信息,请参阅《AWS CloudFormation 用户指南》中的 SimSpace Weaver 部分。
如何将 AWS CloudFormation 与 SimSpace Weaver 配合使用?
您可以创建一个 AWS CloudFormation 模板来指定要预配的 AWS 资源。您的模板可以指定整个架构、架构的一部分或小型解决方案。例如,您可以指定 SimSpace Weaver 解决方案的架构,其中包括 Amazon S3 存储桶、IAM 权限、Amazon Relational Database Service 或 Amazon DynamoDB 中的支持数据库,以及您的 Simulation
资源。然后,您可以使用 AWS CloudFormation 将所有这些资源作为一个单元同时预配。
例 创建 IAM 资源并启动模拟的示例模板
以下示例模板创建 SimSpace Weaver 在您的账户中执行操作所需的 IAM 角色和权限。当您创建项目时,SimSpace Weaver 应用程序 SDK 脚本会在特定 AWS 区域 中创建角色和权限,但您可以使用 AWS CloudFormation 模板来将模拟部署到另一个 AWS 区域,而无需再次运行脚本。例如,您可以这样设置用于灾难恢复目的的备份模拟。
在本示例中,原始模拟名为 MySimulation
。架构的存储桶在 AWS 区域 中已存在,其中 AWS CloudFormation 会构建堆栈。该存储桶包含已正确配置为在 AWS 区域 中运行模拟的架构版本。回想一下,该架构指定了应用程序 zip 文件的位置,该文件是与模拟 AWS 区域 位于相同 中的 Amazon S3 存储桶。在 AWS CloudFormation 构建堆栈时,AWS 区域 中必须已存在存储桶和文件的 zip 文件,否则您的模拟将无法启动。请注意,此示例中的存储桶名称包含 AWS 区域,但这并不能确定存储桶的实际位置。您必须确保存储桶实际位于 AWS 区域 中(您可以在 Amazon S3 控制台中使用 Amazon S3 API,或者在 AWS CLI 中使用 Amazon S3 命令来查看存储桶属性)。
此示例使用 AWS CloudFormation 中的一些内置函数和参数来执行变量替换。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的内置函数参考和伪参数参考。
AWSTemplateFormatVersion: 2010-09-09 Resources: WeaverAppRole: Type: AWS::IAM::Role Properties: RoleName: SimSpaceWeaverAppRole AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - simspaceweaver.amazonaws.com Action: - sts:AssumeRole Path: / Policies: - PolicyName: SimSpaceWeaverAppRolePolicy PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - logs:PutLogEvents - logs:DescribeLogGroups - logs:DescribeLogStreams - logs:CreateLogGroup - logs:CreateLogStream Resource: * - Effect: Allow Action: - cloudwatch:PutMetricData Resource: * - Effect: Allow Action: - s3:ListBucket - s3:PutObject - s3:GetObject Resource: * MyBackupSimulation: Type: AWS::SimSpaceWeaver::Simulation Properties: Name: !Sub 'mySimulation-${AWS::Region}' RoleArn: !GetAtt WeaverAppRole.Arn SchemaS3Location: BucketName: !Sub 'weaver-mySimulation-${AWS::AccountId}-schemas-${AWS::Region}' ObjectKey: !Sub 'schema/mySimulation-${AWS::Region}-schema.yaml'