...
코드 블럭 |
---|
language | yml |
---|
theme | RDark |
---|
title | Template_API_CORS |
---|
linenumbers | true |
---|
|
Api:
# enable CORS; to make more specific, change the origin wildcard
# to a particular domain name, e.g. "'www.example.com'"
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'" |
코드 블럭 |
---|
language | yml |
---|
theme | RDark |
---|
title | Final SAM |
---|
linenumbers | true |
---|
|
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: >-
Building Serverless development environment and CI/CD process for DevOps based
on Cloud9
Globals:
Function:
Runtime: python2.7
Handler: lambda_function.lambda_handler
MemorySize: 128
Timeout: 60
Environment:
Variables:
DB_TABLE_NAME:
Ref: NewsTable
SNS_TOPIC:
Ref: NewsTopic
BUCKET_NAME:
Ref: PollyMp3Bucket
Api:
# enable CORS; to make more specific, change the origin wildcard
# to a particular domain name, e.g. "'www.example.com'"
Cors:
AllowMethods: "'*'"
AllowHeaders: "'*'"
AllowOrigin: "'*'"
Resources:
NewsTable:
Type: 'AWS::Serverless::SimpleTable'
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
NewsTopic:
Type: 'AWS::SNS::Topic'
Properties:
DisplayName: NewsTopic
PollyMp3Bucket:
Type: 'AWS::S3::Bucket'
StaticWebBucket:
Type: 'AWS::S3::Bucket'
Properties:
AccessControl: PublicRead
WebsiteConfiguration:
IndexDocument: index.html
ErrorDocument: error.html
PostNews:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: PostNews
Description: Post news text to convert from text to speech
Events:
PostNewsApi:
Type: Api
Properties:
Path: /news
Method: POST
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'logs:PutLogEvents'
- 'logs:CreateLogStream'
- 'dynamodb:PutItem'
- 'sns:Publish'
Resource: '*'
ConvertAudio:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: ConvertAudio
Description: Convert Audio using Amazon Polly
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'logs:PutLogEvents'
- 'logs:CreateLogStream'
- 'dynamodb:Query'
- 'dynamodb:UpdateItem'
- 's3:GetBucketLocation'
- 's3:PutObject'
- 's3:PutObjectAcl'
- 'polly:SynthesizeSpeech'
Resource: '*'
Events:
ConvertResource:
Type: SNS
Properties:
Topic:
Ref: NewsTopic
GetNews:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: GetNews
Description: Gather information from Ajax calls from web pages
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'logs:PutLogEvents'
- 'logs:CreateLogStream'
- 'dynamodb:Query'
- 'dynamodb:Scan'
Resource: '*'
Events:
GetNewsApi:
Type: Api
Properties:
Path: /news
Method: GET
DeleteNews:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: DeleteNews
Description: Delete news item in DynamoDB Table and mp3 file in S3 bucket.
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'logs:PutLogEvents'
- 'logs:CreateLogStream'
- 'dynamodb:DeleteItem'
- 's3:DeleteObject'
Resource: '*'
Events:
DeleteNewsApi:
Type: Api
Properties:
Path: /news
Method: DELETE
Outputs:
WebsiteURL:
Description: Name of S3 bucket to hold website content
Value:
'Fn::Join':
- ''
- - 'https://'
- 'Fn::GetAtt':
- StaticWebBucket
- DomainName
APIEndpointURL:
Description: URL of your API endpoint
Value:
'Fn::Sub': >-
https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/news/
|
SAM(template.yml)에 DynamoDB, SNS, S3(Web, Mp3) 리소스 추가하기
...