Lambda의 https 팟캐스트 시도
창설
기본적으로 lambda 함수를 만들고 설정 탭으로 이동하면 '함수 URL - 새로 만들기' 항목이 나타납니다. 선택하십시오.
함수 URL 작성 및 작성을 선택합니다.
AWS IAM 및 NONE에서 인증 유형을 선택하고 CORS를 설정하면 URL이 공개됩니다.
NONE 액세스
'NONE'을 설정한 뒤 이벤트에만 로그를 설치해 방문해 봤다.
curl "https://zuksfx3kpofw5jrarpkju3c45u0vztbr.lambda-url.ap-northeast-1.on.aws/test?param=true" \
-X POST \
-H "SignatureHeader: XYZ" \
-H "Content-type: application/json" \
-d '{"type": "payment-succeeded"}'
{
version: '2.0',
routeKey: '$default',
rawPath: '/test',
rawQueryString: 'param=true',
headers: {
'x-amzn-trace-id': 'Root=1-624e32ed-740a44c5619c101d7e8fd44a',
'x-forwarded-proto': 'https',
host: 'zuksfx3kpofw5jrarpkju3c45u0vztbr.lambda-url.ap-northeast-1.on.aws',
'x-forwarded-port': '443',
'content-type': 'application/json',
'x-forwarded-for': 'xxx.xxx.xxx.xxx',
signatureheader: 'XYZ',
accept: '*/*',
'user-agent': 'curl/7.68.0'
},
queryStringParameters: { param: 'true' },
requestContext: {
accountId: 'anonymous',
apiId: 'zuksfx3kpofw5jrarpkju3c45u0vztbr',
domainName: 'zuksfx3kpofw5jrarpkju3c45u0vztbr.lambda-url.ap-northeast-1.on.aws',
domainPrefix: 'zuksfx3kpofw5jrarpkju3c45u0vztbr',
http: {
method: 'POST',
path: '/test',
protocol: 'HTTP/1.1',
sourceIp: 'xxx.xxx.xxx.xxx',
userAgent: 'curl/7.68.0'
},
requestId: '454b3ade-8808-42c2-a65e-b5ed9cc7f1bb',
routeKey: '$default',
stage: '$default',
time: '07/Apr/2022:00:40:13 +0000',
timeEpoch: 1649292013195
},
body: '{"type": "payment-succeeded"}',
isBase64Encoded: false
}
Content-type: application/json
에 조회 파라미터를 추가하지 않으면 다음과 같은 오류가 발생합니다.또한 바디의 내용은 베이스 64입니다. 주의하세요.IAM 액세스
다른 lambda를 만들고 싶은데 불러보려고 했는데 잘 안 돼요.액세스가 완료되면 업데이트됩니다.
serverless frame work로 해볼게요.
서버리스 프레임 워크도 맞춰서 해봤어요.
먼저 템플릿에서 생성합니다.
npx serverless create -t aws-nodejs-typescript -n sls-url-test
서버리스 프레임 워크는 3.12에서 시작된 대응이기 때문에 수정되었습니다. "devDependencies": {
- "@serverless/typescript": "^2.23.0",
+ "@serverless/typescript": "^3.8.0",
"@types/aws-lambda": "^8.10.71",
"@types/node": "^14.14.25",
"json-schema-to-ts": "^1.5.0",
- "serverless": "^2.23.0",
+ "serverless": "^3.12.0",
"serverless-webpack": "^5.3.5",
"ts-loader": "^8.0.15",
"ts-node": "^9.1.1",
"tsconfig-paths": "^3.9.0",
"tsconfig-paths-webpack-plugin": "^3.3.0",
"typescript": "^4.1.3",
"webpack": "^5.20.2",
"webpack-node-externals": "^2.5.2"
},
src/functions/hello/index.수정ts- import schema from './schema';
import { handlerPath } from '@libs/handlerResolver';
export default {
handler: `${handlerPath(__dirname)}/handler.main`,
+ url: true
- events: [
- {
- http: {
- method: 'post',
- path: 'hello',
- request: {
- schemas: {
- 'application/json': schema
- }
- }
- }
- }
- ]
}
버전이 3 계열이기 때문에 서버리스입니다.수정ts- frameworkVersion: '2',
+ frameworkVersion: '3',
준비됐습니다. 지금부터 디버깅을 시작하겠습니다.이렇게 하면 제한이 없는 URL 접근을 할 수 있다.npm install
npx serverless deploy
Reference
이 문제에 관하여(Lambda의 https 팟캐스트 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/merutin/articles/88f61b029cd68e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)