source/infrastructure/cfn-cdf-core-services-B.yaml (165 lines of code) (raw):
#-----------------------------------------------------------------------------------------------------------------------
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
# with the License. A copy of the License is located at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
# OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
# and limitations under the License.
#-----------------------------------------------------------------------------------------------------------------------
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: CDF (AWS Connected Device Framework)
Parameters:
Environment:
Description: Name of environment. Used to name the created resources.
Type: String
MinLength: 1
ArtifactsBucket:
Description: Name of environment. Used to name the created resources.
Type: String
ArtifactsConfigPrefix:
Description: Key prefix within bucket where config artifacts are uploaded to.
Type: String
Default: 'config/'
TemplateSnippetS3UriBase:
Description: |
S3 uri of directory where template snippets are stored for the account.
Type: String
MinLength: 1
AuthType:
Description: Authorization type to apply to the API gateway endpoints
Type: String
Default: None
AllowedValues:
- None
- Private
- Cognito
- LambdaRequest
- LambdaToken
- ApiKey
- IAM
MinLength: 1
ApiGatewayDefinitionTemplate:
Description: |
Name of the API Gateway Cloudformation definition along with the authorization method to use. Use one of the provided
templates to implement no auth, private, api key, lambda request, lamdba token, or Cognito auth, or modify one to meet your own
authentization requirements. The template must exist within the provided TemplateSnippetS3UriBase location.
Default: 'cfn-apiGateway-noAuth.yaml'
Type: String
MinLength: 1
CognitoUserPoolArn:
Description: Cognito user pool arn. Only required if AuthType is set to 'Cognito'.
Type: String
Default: 'N/A'
AuthorizerFunctionArn:
Description: Lambda authorizer function arn. Only required if AuthType is set to 'LambdaRequest' or 'LambdaToken'.
Type: String
Default: 'N/A'
PublicSubNetIds:
Description: Comma delimited list of private subnetIds to deploy the Bastion into
Type: String
VpcId:
Description: ID of VPC to deploy the Asset Library into
Type: String
CDFSecurityGroupId:
Description: ID of an existing CDF security group to deploy the Asset Library into (required if running full mode, or private API)
Type: String
PrivateSubNetIds:
Description: Comma delimited list of private subnetIds to deploy the Asset Library into
Type: CommaDelimitedList
PrivateApiGatewayVPCEndpoint:
Description: VPC endpoint required for private api gateway support
Type: String
IncludeSimulationLauncher:
Description: If true, then Simulation Launcher will be deployed.
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
MinLength: 1
IncludeSimulationManager:
Description: If true, then Simulation Manager will be deployed.
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
MinLength: 1
CustomResourceLambdaArn:
Description: Custom resource lambda arn
Type: String
MinLength: 1
AssetLibraryFunctionName:
Description: Asset library function name
Type: String
MinLength: 1
KmsKeyId:
Description: The KMS key ID used to encrypt SSM parameters. If not provided, one will be created.
Type: String
JMeterRepoName:
Description: JMeter repository URI for the simulation launcher docker image.
Type: String
EnableApiGatewayAccessLogs:
Description: Enales API gateway Access Logging, defaults to false if not specified.
Type: String
Default: false
AllowedValues:
- true
- false
MinLength: 1
SimulationManagerAppConfigOverride:
Description: Simulation Manager Application Configuration AssetLibrary Application
Type: String
Default: '{}'
SimulationLauncherAppConfigOverride:
Description: Simulation Launcher Application Configuration AssetLibrary Application
Type: String
Default: '{}'
Conditions:
DeploySimulationLauncher: !Equals [ !Ref IncludeSimulationLauncher, 'true' ]
DeploySimulationManager: !Equals [ !Ref IncludeSimulationManager, 'true' ]
UsingVPCForAuth: !Equals [ !Ref AuthType, 'Private' ]
Resources:
SimulationLauncher:
Type: AWS::CloudFormation::Stack
Condition: DeploySimulationLauncher
Properties:
TemplateURL: ../packages/services/simulation-launcher/infrastructure/cfn-simulation-launcher.yaml
Parameters:
ApplicationConfigurationOverride: !Ref SimulationLauncherAppConfigOverride
Environment: !Ref Environment
JmeterRepoName: !Ref JMeterRepoName
VpcId: !Ref VpcId
PublicSubNetIds: !Ref PublicSubNetIds
BucketName: !Ref ArtifactsBucket
CustomResourceLambdaArn: !Ref CustomResourceLambdaArn
KmsKeyId: !Ref KmsKeyId
SimulationManager:
Type: AWS::CloudFormation::Stack
Condition: DeploySimulationManager
Properties:
TemplateURL: ../packages/services/simulation-manager/infrastructure/cfn-simulation-manager.yml
Parameters:
ApplicationConfigurationOverride: !Ref SimulationManagerAppConfigOverride
Environment: !Ref Environment
TemplateSnippetS3UriBase: !Ref TemplateSnippetS3UriBase
AuthType: !Ref AuthType
ApiGatewayDefinitionTemplate: !Ref ApiGatewayDefinitionTemplate
VpcId: !If [ UsingVPCForAuth, !Ref VpcId, 'N/A' ]
CDFSecurityGroupId: !If [ UsingVPCForAuth, !Ref CDFSecurityGroupId, 'N/A' ]
PrivateSubNetIds: !If [ UsingVPCForAuth, !Ref PrivateSubNetIds, 'N/A' ]
PrivateApiGatewayVPCEndpoint: !If [ UsingVPCForAuth, !Ref PrivateApiGatewayVPCEndpoint, 'N/A' ]
CognitoUserPoolArn: !Ref CognitoUserPoolArn
AuthorizerFunctionArn: !Ref AuthorizerFunctionArn
CustomResourceLambdaArn: !Ref CustomResourceLambdaArn
BucketName: !Ref ArtifactsBucket
SimulationLauncherSnsTopic: !GetAtt SimulationLauncher.Outputs.SnsTopic
AssetLibraryFunctionName: !Ref AssetLibraryFunctionName
KmsKeyId: !Ref KmsKeyId
EnableApiGatewayAccessLogs: !Ref EnableApiGatewayAccessLogs
Outputs:
SimulationManagerRestApiFunctionName:
Condition: DeploySimulationManager
Description: SimulationManager REST API lambda function name
Value: !GetAtt SimulationManager.Outputs.RestApiFunctionName
SimulationManagerApiGatewayUrl:
Condition: DeploySimulationManager
Description: SimulationManager REST API URL
Value: !GetAtt SimulationManager.Outputs.ApiGatewayUrl
SimulationManagerApiGatewayHost:
Condition: DeploySimulationManager
Description: SimulationManager REST API host
Value: !GetAtt SimulationManager.Outputs.ApiGatewayHost