test
This commit is contained in:
		
							
								
								
									
										97
									
								
								serverless/serverless-upload.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								serverless/serverless-upload.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					AWSTemplateFormatVersion: '2010-09-09'
 | 
				
			||||||
 | 
					Description: Serverless demo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Resources:
 | 
				
			||||||
 | 
					  # SNS Topic
 | 
				
			||||||
 | 
					  MySNSTopic:
 | 
				
			||||||
 | 
					    Type: AWS::SNS::Topic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # SQS Queue
 | 
				
			||||||
 | 
					  MySQSQueue:
 | 
				
			||||||
 | 
					    Type: AWS::SQS::Queue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # SNS Subscription to SQS
 | 
				
			||||||
 | 
					  SNSToSQSSubscription:
 | 
				
			||||||
 | 
					    Type: AWS::SNS::Subscription
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      TopicArn: !Ref MySNSTopic
 | 
				
			||||||
 | 
					      Protocol: sqs
 | 
				
			||||||
 | 
					      Endpoint: !GetAtt MySQSQueue.Arn
 | 
				
			||||||
 | 
					      RawMessageDelivery: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # SQS Queue Policy to Allow SNS to Send Messages
 | 
				
			||||||
 | 
					  SQSPolicy:
 | 
				
			||||||
 | 
					    Type: AWS::SQS::QueuePolicy
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      Queues:
 | 
				
			||||||
 | 
					        - !Ref MySQSQueue
 | 
				
			||||||
 | 
					      PolicyDocument:
 | 
				
			||||||
 | 
					        Version: '2012-10-17'
 | 
				
			||||||
 | 
					        Statement:
 | 
				
			||||||
 | 
					          - Effect: Allow
 | 
				
			||||||
 | 
					            Principal:
 | 
				
			||||||
 | 
					              Service: sns.amazonaws.com
 | 
				
			||||||
 | 
					            Action: sqs:SendMessage
 | 
				
			||||||
 | 
					            Resource: !GetAtt MySQSQueue.Arn
 | 
				
			||||||
 | 
					            Condition:
 | 
				
			||||||
 | 
					              ArnEquals:
 | 
				
			||||||
 | 
					                aws:SourceArn: !Ref MySNSTopic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # API Gateway
 | 
				
			||||||
 | 
					  ApiGatewayRestApi:
 | 
				
			||||||
 | 
					    Type: AWS::ApiGateway::RestApi
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      Name: SNSInvokeAPI
 | 
				
			||||||
 | 
					      Parameters:
 | 
				
			||||||
 | 
					        endpointConfigurationTypes: REGIONAL
 | 
				
			||||||
 | 
					      EndpointConfiguration:
 | 
				
			||||||
 | 
					        Types:
 | 
				
			||||||
 | 
					        - REGIONAL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # API Gateway Resource
 | 
				
			||||||
 | 
					  ApiGatewayResource:
 | 
				
			||||||
 | 
					    Type: AWS::ApiGateway::Resource
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      ParentId: !GetAtt ApiGatewayRestApi.RootResourceId
 | 
				
			||||||
 | 
					      PathPart: invoke
 | 
				
			||||||
 | 
					      RestApiId: !Ref ApiGatewayRestApi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # API Gateway Method to integrate directly with SNS
 | 
				
			||||||
 | 
					  ApiGatewayMethod:
 | 
				
			||||||
 | 
					    Type: AWS::ApiGateway::Method
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      RestApiId: !Ref ApiGatewayRestApi
 | 
				
			||||||
 | 
					      ResourceId: !Ref ApiGatewayResource
 | 
				
			||||||
 | 
					      HttpMethod: POST
 | 
				
			||||||
 | 
					      AuthorizationType: NONE
 | 
				
			||||||
 | 
					      Integration:
 | 
				
			||||||
 | 
					        IntegrationHttpMethod: POST
 | 
				
			||||||
 | 
					        Type: AWS
 | 
				
			||||||
 | 
					        Uri: !Sub arn:aws:apigateway:${AWS::Region}:sns:path/Publish
 | 
				
			||||||
 | 
					        Credentials: "arn:aws:iam::920372985147:role/AWSAPIGateway"
 | 
				
			||||||
 | 
					        RequestParameters:
 | 
				
			||||||
 | 
					          integration.request.header.Content-Type: "'application/x-www-form-urlencoded'"
 | 
				
			||||||
 | 
					        RequestTemplates:
 | 
				
			||||||
 | 
					          application/json: !Sub |
 | 
				
			||||||
 | 
					            Action=Publish&TopicArn={!Ref MySNSTopic}&Message=$util.urlEncode($input.body)
 | 
				
			||||||
 | 
					        IntegrationResponses:
 | 
				
			||||||
 | 
					          - StatusCode: 200
 | 
				
			||||||
 | 
					            ResponseTemplates:
 | 
				
			||||||
 | 
					              application/json: '{"status": "Message published to SNS"}'
 | 
				
			||||||
 | 
					      MethodResponses:
 | 
				
			||||||
 | 
					        - StatusCode: 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # API Gateway Deployment
 | 
				
			||||||
 | 
					  ApiGatewayDeployment:
 | 
				
			||||||
 | 
					    Type: AWS::ApiGateway::Deployment
 | 
				
			||||||
 | 
					    DependsOn: ApiGatewayMethod
 | 
				
			||||||
 | 
					    Properties:
 | 
				
			||||||
 | 
					      RestApiId: !Ref ApiGatewayRestApi
 | 
				
			||||||
 | 
					      StageName: prod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Outputs:
 | 
				
			||||||
 | 
					  ApiEndpoint:
 | 
				
			||||||
 | 
					    Description: "Endpoint URL for POST /invoke"
 | 
				
			||||||
 | 
					    Value: !Sub "https://${ApiGatewayRestApi}.execute-api.${AWS::Region}.amazonaws.com/prod/invoke"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user