Resources:
  items07D08F4B:
    Type: AWS::DynamoDB::Table
    Properties:
      KeySchema:
        - AttributeName: itemId
          KeyType: HASH
      AttributeDefinitions:
        - AttributeName: itemId
          AttributeType: S
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5
      TableName: items
    UpdateReplacePolicy: Delete
    DeletionPolicy: Delete
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/items/Resource
  createItemFunctionServiceRole1BBF2178:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Action: sts:AssumeRole
            Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
        Version: "2012-10-17"
      ManagedPolicyArns:
        - Fn::Join:
            - ""
            - - "arn:"
              - Ref: AWS::Partition
              - :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/createItemFunction/ServiceRole/Resource
  createItemFunctionServiceRoleDefaultPolicy8FAF1611:
    Type: AWS::IAM::Policy
    Properties:
      PolicyDocument:
        Statement:
          - Action:
              - dynamodb:BatchGetItem
              - dynamodb:GetRecords
              - dynamodb:GetShardIterator
              - dynamodb:Query
              - dynamodb:GetItem
              - dynamodb:Scan
              - dynamodb:BatchWriteItem
              - dynamodb:PutItem
              - dynamodb:UpdateItem
              - dynamodb:DeleteItem
            Effect: Allow
            Resource:
              - Fn::GetAtt:
                  - items07D08F4B
                  - Arn
              - Ref: AWS::NoValue
        Version: "2012-10-17"
      PolicyName: createItemFunctionServiceRoleDefaultPolicy8FAF1611
      Roles:
        - Ref: createItemFunctionServiceRole1BBF2178
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/createItemFunction/ServiceRole/DefaultPolicy/Resource
  createItemFunction8D47E48A:
    Type: AWS::Lambda::Function
    Properties:
      Code:
        S3Bucket:
          Ref: AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37S3Bucket0DCEE2D9
        S3Key:
          Fn::Join:
            - ""
            - - Fn::Select:
                  - 0
                  - Fn::Split:
                      - "||"
                      - Ref: AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37S3VersionKey56B2E5D6
              - Fn::Select:
                  - 1
                  - Fn::Split:
                      - "||"
                      - Ref: AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37S3VersionKey56B2E5D6
      Handler: create.handler
      Role:
        Fn::GetAtt:
          - createItemFunctionServiceRole1BBF2178
          - Arn
      Runtime: nodejs10.x
      Environment:
        Variables:
          TABLE_NAME:
            Ref: items07D08F4B
          PRIMARY_KEY: itemId
    DependsOn:
      - createItemFunctionServiceRoleDefaultPolicy8FAF1611
      - createItemFunctionServiceRole1BBF2178
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/createItemFunction/Resource
      aws:asset:path: asset.86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37
      aws:asset:property: Code
  itemsApi28111E1C:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: Items Service
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Resource
  itemsApiDeploymentFEC31BD0f48db32b51f0c56a135190c6412bd0e2:
    Type: AWS::ApiGateway::Deployment
    Properties:
      RestApiId:
        Ref: itemsApi28111E1C
      Description: Automatically created by the RestApi construct
    DependsOn:
      - itemsApiitemsPOSTDD3E83D0
      - itemsApiitems9015DBED
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Deployment/Resource
  itemsApiDeploymentStageprodE77B897D:
    Type: AWS::ApiGateway::Stage
    Properties:
      RestApiId:
        Ref: itemsApi28111E1C
      DeploymentId:
        Ref: itemsApiDeploymentFEC31BD0f48db32b51f0c56a135190c6412bd0e2
      StageName: prod
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/DeploymentStage.prod/Resource
  itemsApiCloudWatchRoleB5C7B431:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
          - Action: sts:AssumeRole
            Effect: Allow
            Principal:
              Service: apigateway.amazonaws.com
        Version: "2012-10-17"
      ManagedPolicyArns:
        - Fn::Join:
            - ""
            - - "arn:"
              - Ref: AWS::Partition
              - :iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/CloudWatchRole/Resource
  itemsApiAccount591BF3E1:
    Type: AWS::ApiGateway::Account
    Properties:
      CloudWatchRoleArn:
        Fn::GetAtt:
          - itemsApiCloudWatchRoleB5C7B431
          - Arn
    DependsOn:
      - itemsApi28111E1C
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Account
  itemsApiitems9015DBED:
    Type: AWS::ApiGateway::Resource
    Properties:
      ParentId:
        Fn::GetAtt:
          - itemsApi28111E1C
          - RootResourceId
      PathPart: items
      RestApiId:
        Ref: itemsApi28111E1C
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Default/items/Resource
  itemsApiitemsPOSTApiPermissionApiLambdaCrudDynamoDBExampleitemsApiC8514132POSTitems7DA2B753:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName:
        Fn::GetAtt:
          - createItemFunction8D47E48A
          - Arn
      Principal: apigateway.amazonaws.com
      SourceArn:
        Fn::Join:
          - ""
          - - "arn:"
            - Ref: AWS::Partition
            - ":execute-api:"
            - Ref: AWS::Region
            - ":"
            - Ref: AWS::AccountId
            - ":"
            - Ref: itemsApi28111E1C
            - /
            - Ref: itemsApiDeploymentStageprodE77B897D
            - /POST/items
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Default/items/POST/ApiPermission.ApiLambdaCrudDynamoDBExampleitemsApiC8514132.POST..items
  itemsApiitemsPOSTApiPermissionTestApiLambdaCrudDynamoDBExampleitemsApiC8514132POSTitemsAE25CBB6:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName:
        Fn::GetAtt:
          - createItemFunction8D47E48A
          - Arn
      Principal: apigateway.amazonaws.com
      SourceArn:
        Fn::Join:
          - ""
          - - "arn:"
            - Ref: AWS::Partition
            - ":execute-api:"
            - Ref: AWS::Region
            - ":"
            - Ref: AWS::AccountId
            - ":"
            - Ref: itemsApi28111E1C
            - /test-invoke-stage/POST/items
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Default/items/POST/ApiPermission.Test.ApiLambdaCrudDynamoDBExampleitemsApiC8514132.POST..items
  itemsApiitemsPOSTDD3E83D0:
    Type: AWS::ApiGateway::Method
    Properties:
      HttpMethod: POST
      ResourceId:
        Ref: itemsApiitems9015DBED
      RestApiId:
        Ref: itemsApi28111E1C
      AuthorizationType: NONE
      Integration:
        IntegrationHttpMethod: POST
        Type: AWS_PROXY
        Uri:
          Fn::Join:
            - ""
            - - "arn:"
              - Ref: AWS::Partition
              - ":apigateway:"
              - Ref: AWS::Region
              - :lambda:path/2015-03-31/functions/
              - Fn::GetAtt:
                  - createItemFunction8D47E48A
                  - Arn
              - /invocations
    Metadata:
      aws:cdk:path: ApiLambdaCrudDynamoDBExample/itemsApi/Default/items/POST/Resource
  CDKMetadata:
    Type: AWS::CDK::Metadata
    Properties:
      Modules: aws-cdk=1.19.0,@aws-cdk/assets=1.19.0,@aws-cdk/aws-apigateway=1.19.0,@aws-cdk/aws-applicationautoscaling=1.19.0,@aws-cdk/aws-autoscaling-common=1.19.0,@aws-cdk/aws-cloudwatch=1.19.0,@aws-cdk/aws-dynamodb=1.19.0,@aws-cdk/aws-ec2=1.19.0,@aws-cdk/aws-events=1.19.0,@aws-cdk/aws-iam=1.19.0,@aws-cdk/aws-kms=1.19.0,@aws-cdk/aws-lambda=1.19.0,@aws-cdk/aws-s3=1.19.0,@aws-cdk/aws-s3-assets=1.19.0,@aws-cdk/aws-sqs=1.19.0,@aws-cdk/aws-ssm=1.19.0,@aws-cdk/core=1.19.0,@aws-cdk/cx-api=1.19.0,@aws-cdk/region-info=1.19.0,jsii-runtime=node.js/v10.16.3
    Condition: CDKMetadataAvailable
Parameters:
  AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37S3Bucket0DCEE2D9:
    Type: String
    Description: S3 bucket for asset "86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37"
  AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37S3VersionKey56B2E5D6:
    Type: String
    Description: S3 key for asset version "86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37"
  AssetParameters86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37ArtifactHash9A5F9327:
    Type: String
    Description: Artifact hash for asset "86e2970d042dfb0ed5675349c01493829075063723f6685f7a56ff24f4d0cd37"
Outputs:
  itemsApiEndpoint8392E274:
    Value:
      Fn::Join:
        - ""
        - - https://
          - Ref: itemsApi28111E1C
          - .execute-api.
          - Ref: AWS::Region
          - "."
          - Ref: AWS::URLSuffix
          - /
          - Ref: itemsApiDeploymentStageprodE77B897D
          - /
Conditions:
  CDKMetadataAvailable:
    Fn::Or:
      - Fn::Or:
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-northeast-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-northeast-2
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-south-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-southeast-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-southeast-2
          - Fn::Equals:
              - Ref: AWS::Region
              - ca-central-1
          - Fn::Equals:
              - Ref: AWS::Region
              - cn-north-1
          - Fn::Equals:
              - Ref: AWS::Region
              - cn-northwest-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-central-1
      - Fn::Or:
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-north-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-2
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-3
          - Fn::Equals:
              - Ref: AWS::Region
              - me-south-1
          - Fn::Equals:
              - Ref: AWS::Region
              - sa-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-east-2
          - Fn::Equals:
              - Ref: AWS::Region
              - us-west-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-west-2