본문 바로가기

반응형

Ops/AWS

(151)
AWS Lambda Code - firehose peer AWS Lambda Code - firehose peer # Python 3.8 import base64 import json import datetime print('Loading function') def lambda_handler(event, context): output = [] for record in event['records']: print("recordId: " + record['recordId']) payload = base64.b64decode(record['data']).decode('utf-8') # JSON(payload) -> Dict(payload_dict) payload_dict = json.loads(payload) data_dict = {} print("payload_di..
AWS Lambda Code - 403 rewrite request AWS Lambda Code - 403 rewrite request # node.js 16.x exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers; const uri = request.uri; const host = request.headers.host[0].value; var domain = "https://mkdir-chandler.com" if ( uri != null && uri != "") domain = domain + request.uri if ( request.querystring != null && request.q..
AWS Lambda Code - 특정 region 요청 redirect AWS Lambda Code - 특정 region 요청 redirect function handler(event) { var request = event.request; var supported_countries = ['kr']; if (request.uri.substr(3,1) != '/') { var headers = request.headers; var newUri; var countryCode = headers['cloudfront-viewer-country'].value.toLowerCase(); if (supported_countries.includes(countryCode)) { newUri = 'https://mkdir-chandler.com:443/test'; var response = ..
AWS Lambda Code - 이미지 리사이징 (feat. cloudfront) AWS Lambda Code - 이미지 리사이징 (feat. cloudfront) const imagemin = require("imagemin"); const imageminGiflossy = require("imagemin-giflossy"); const fsPromise = require("fs").promises; const querystring = require("querystring"); const Sharp = require("sharp"); const AWS = require("aws-sdk"); const S3 = new AWS.S3({ region: "us-east-2" }); const BUCKET = { test1: "s3-ue2-test1", test2: "s3-ue2-test2"..
AWS Lamdba code - maintenance (node.js) AWS Lamdba code - maintenance (node.js) 점검 작업이 있을 경우 web 페이지로 접속하면 점검 안내 페이지 (혹은 이미지)를 보여주는 함수 세팅입니다. exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers; console.log('request_ip', request.clientIp); // if (user_agent && user_agent.match(bot.toLowerCase()) && 1===0) { if(request.clientIp != "192.168.1.50" && request.clien..
AWS Lambda - 3번이 실행되는 이슈 (trouble shooting) AWS Lambda - 3번이 실행되는 이슈 (trouble shooting) ■ 상황 - 람다 함수는 정상적으로 실행이 되는데, 3번씩 실행되는 이슈가 발생 - 알람을 위한 함수이기 때문에 같은 알람이 3번씩 전달됨 ■ 에러 메시지 [ERROR] KeyError: 'channel' Traceback (most recent call last): File "/var/task/lambda_function.py", line 84, in lambda_handler logger.info("Message posted to %s", slack_message['channel']) ■ 원인 - slack channel 이름 변수가 일치하지 않는다는 오류 메시지가 발생했으나 무시한 것이 문제 - 처음 만들었던 채널 이름을..
AWS Lambda - Lambda@edge Limit AWS Lambda - Lambda@edge Limit Lambda를 CloudFront에서 사용하는 경우 Lambda@edge로 많이들 사용하고 있는데요, 버즈니아에서만 세팅이 가능하다는 점 등 제약이 상당히 많지만 그만큼 사용이 편하고 매력적이기 때문에 많이들 사용하는 것 같습니다. 그런데 말입니다, 버즈니아에 세팅해야 한다는 것 말고도 다양한(?) 제한이 있다는 사실 알고 계셨나요?!! 아래는 그 제약사항입니다. The following Lambda features are not supported by Lambda@Edge: - Configuration of your Lambda function to access resources inside your VPC. - Lambda function dea..
AWS Lambda - 기본 정보 (information) AWS Lambda - 기본 정보 (information) Lambda 장점 - 서버 없이 코드 실행 가능 - 코드가 병렬로 실행되고 트리거는 개별적으로 처리되어 워크로드 규모에 맞게 자동으로 확장/축소 - 처음 100만건 호출은 무료로 사용이 가능하며, 코드가 실행되지 않을 때는 요금이 부과하지 않음 Lambda 단점 - 처음 호출 시 서버 준비에 시간이 소요되어 함수 처리가 지연된다. (Gold Start) - EC2 온디멘드와 같은 시간을 사용할 경우 비용이 많이 발생한다. Lambda VPC 할당 - Lambda는 API Gateway를 통해 all inbound/outbound 설정이다. - Redis, RDS와 같은 서비스와 연결하기 위해서는 같은 VPC에 위치해야 한다. - 이 때, NAT ..
AWS IAM Role - sts 신뢰 관계 편집 AWS IAM Role - sts 신뢰 관계 편집 sts 역할을 넣을 role을 선택합니다. 신뢰관계 탭을 보면 '신뢰 관계 편집' 항목이 있는데요, 해당 버튼을 클릭합니다. json 편집기가 나타나는데, 여기에 sts 역할을 넣을 arn 정보를 입력합니다. default 형태의 json은 아래를 참고하세요 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::123456789012:role/role-name" ] } ] } 완료되면 해당 arn 정보를 필요한 리소스에 입력하면 됩니다. by mkdir-chandler
AWS IAM Policy - sts assume role AWS IAM Policy - sts assume role ■ 설명 assume role을 사용하기 위해 최초 로그인하는 계정에 넣어야 하는 policy ■ 코드 { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::123456789012:role/A-AccessRole", "arn:aws:iam::234567890123:role/B-AccessRole", "arn:aws:iam::345678901234:role/C-AccessRole", "arn:aws:iam::456789012345:role/D-AccessRole", "arn:aws:iam::567890123456:role/E-A..

728x90
반응형