오랜만에 쓰는 Serverless 시리즈. 아직 정리할게 많은데, 왜이렇게 귀찮은지...
삽질
1. Lambda - DynamoDB 연결
-
DynamoDB 연결 시 에러 발생
. Cannot access stream arn:aws:dynamodb:ap-northeast-2:527478947915:table/serverless_1/stream/2020-10-21T05:15:39.587. Please ensure the role can perform the GetRecords, GetShardIterator, DescribeStream, and ListStreams Actions on your stream in IAM. (Service: AWSLambda; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: 22d8f50c-d443-4d6c-84e2-c74c04f455f5; Proxy: null)
https://stackoverflow.com/questions/46276837/aws-lambda-not-connecting-with-dynamo-db
-
IAM 설정 필요
IAM에서 액세스 권한을 주지 않으면 기본적으로 접근할 수 없는 듯
IAM은 Lambda 함수 생성 후 바꿀 수 없는가?
IAM 창에서 정책 연결로 설정 가능
-
IAM 에서
{ "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:ListStreams" ], "Resource": "arn:aws:dynamodb:ap-northeast-2:527478947915:table/*" }해당 정책 설정 -> JSON으로 정책 편집 가능
-
AWS 공식 문서
-
2. Lambda - VPC 설정
-
The provided execution role does not have permissions to call CreateNetworkInterface on EC2
-
IAM 설정
{ "Effect": "Allow", "Action": [ "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeInstances", "ec2:AttachNetworkInterface" ], "Resource": "*" }
-
3. invoke API를 호출하면 이 메시지를 사용한 작업에 실패했습니다. Rate Exceeded.
해결 못함
4. Gateway URL
배포를 하면 된다.
{"message":"Missing Authentication Token"}link 뒤에 /board, 리소스 정보를 줄 것
html 입히기
보안적인 문제로 인해 HTML을 일반적으로 두게 되면 CORS 에러 발생
5. 502 Bad Gateway
-
CloudWatch에서 로그 확인 -->
-
Malformed Lambda proxy response.
lambda 호출 시 원하는 response 형태가 정해져 있음
return { statusCode, body, headers, };해당 형식을 꼭 지켜야 함
-
6. VPC 설정
https://changhoi.github.io/posts/serverless/serverless-vpc-deploy-demo/
-
간단한 프로젝트
별다른 옵션 없이 Public한 오픈 API
-
개발 서버 분리 || 일정 기간 동안 유지 보수 및 배포
내부 VPC에서 배포필요
-
S3, DynamoDB 접근을 위해 NAAT Gateway || VPC Endpoint 필요
-
7. HTML로 접근 시 CORS 에러
:warning: Access to fetch at 'https://92ziazl1wi.execute-api.ap-northeast-2.amazonaws.com/2020-10-22/board' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
callback(null, { 'statusCode': 200, 'headers': {'Access-Control-Allow-Origin': '*'}, 'body': JSON.stringify(body) } ); }
header에서 Allow 설정 필수!
8. CORS policy 에러
:warning: Access to XMLHttpRequest at 'file:///C:/Users/jihong.kim/Desktop/serverless/[object%20Object]' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
npm install http-server -g npx http-server (chrome 주소창) http://127.0.0.1:8080 - 해당 파일에 접속
-
CORS 해결법: 서버에 올려서 해결
-
Why?
-
자바 스크립트 모듈 보안 요구사항
-
파일 리소스 요청 시 origin(출처)가 null로 넘어감
-
9. jQuery ajax post 405 method not allowed
ajax에 type: post 명시
10. API Gateway Ajax POST 400 error
https://stackoverflow.com/questions/38987256/aws-api-gateway-cors-post-not-working
Ajax에서 data 전송 시, json.stringfy를 해줘야 형식이 맞음..
11. jQuery로 특정 위치에 html 뿌리기
https://stackoverflow.com/questions/55371920/display-data-in-table-on-ajax-success
div로 영역 + id 잡아준 후 해당 위치에 .html(html);
12. This XML file does not appear to have any style information associated with it. The document tree is shown below.
s3 버킷을 public으로 설정
관련 글 목록
2021/01/26 - [IT/AWS] - Serverless with AWS Lambda (1)
2021/01/26 - [IT/AWS] - Serverless with AWS Lambda (2)
'IT > AWS' 카테고리의 다른 글
[3T] AWS 3 tier Architecture 구성하기 - Windows Terraform Infra (1) (0) | 2021.03.11 |
---|---|
AWS Directory Service 생성 및 Windows FSx 연결 (0) | 2021.03.09 |
AWS Python 연결 - Boto3 문서 보기 (0) | 2021.03.05 |
AWS EFS Mount (0) | 2021.03.02 |
CloudEndure Windows Migration (0) | 2021.02.23 |