함대 프로비저닝 전에 후크하는 람다 작성 예
마지막 기사의 계속으로, 플릿 프로비저닝 전에 후크하는 Lambda의 작성 예를 기재합니다.
프로비저닝 허가/거부 판정 방법
아래 CSV 파일 예
SerialNumber,Effect
1,Allow
2,Deny
3,Allow
Lambda 함수
변경 전 코드
import json
provision_response = {'allowProvisioning': False}
def isBlacklisted(serial_number):
#check serial against database of blacklisted serials
...
def lambda_handler(event, context):
# DISPLAY ALL ATTRIBUTES SENT FROM DEVICE
print("Received event: " + json.dumps(event, indent=2))
# Assume Device has sent a device_serial attribute
device_serial = event["parameters"]["SerialNumber"]
# Check serial against an isBlacklisted() function
if not isBlacklisted(device_serial):
provision_response["allowProvisioning"] = True
return provision_response
isBlacklisted에서,
인수로 일련 번호를 받고,
프로비저닝 권한이면 False,
프로비저닝 거부이면 True를 반환하도록 변경합니다.
변경 후 코드
참고 기사:
htps : // 코 m / 아스나로 / ms / 99472b492 a f387d97b70
htps : //에서. 응 kmk. 메 / py-on-panda s-o-t-a-t-c-i-c /
lambda_function.py
import json
import boto3
import pandas as pd
from io import StringIO
def isBlacklisted(serial_number):
BUCKET_NAME:<バケット名>
KEY_NAME:<CSVファイルパス(xxx/yyy.csv)>
# S3に格納したCSVファイルからDataFrameを作成
s3 = boto3.resource('s3')
s3obj = s3.Object(BUCKET_NAME, KEY_NAME).get()
csv_string = s3obj['Body'].read().decode('utf-8')
df = pd.read_csv(StringIO(csv_string), index_col=0)
try:
# 許可/拒否判定
effect = df.at[serial_number, 'Effect']
if effect == 'Allow':
return False
else:
return True
except:
# 該当serial_numberなし
return True
def lambda_handler(event, context):
# 変更なし
외부 라이브러리 사용
Lambda에서 외부 라이브러리 (이번 경우 Pandas)를 사용하는 경우,
라이브러리를 zip에 함께 업로드하는 방법과,
레이어를 설정하는 방법이 있습니다.
레이어를 만드는 방법에 대해서는 언급하지 않습니다.
아래 기사(2. pandas의 Layer의 ARN을 조사하고 Layer 추가)를 참고로 Layer 추가
htps : // 코 m / 포 r 베아 r08 / ms / 202752d5 ~ fcb65595bd9
실행 역할의 정책 설정
액세스 제한 → 역할 이름 링크 클릭
'정책 연결'을 클릭합니다.
AWS 관리형 정책에서 s3에서 검색하고,
이번에 S3에 저장한 파일의 리드가 필요하므로,
AmazonS3ReadOnlyAccess를 확인하고,
정책 연결을 클릭합니다.
Lambda 함수 업로드
※ 로컬에서 Lambda 함수를 작성하여 업로드하는 경우
파일 이름은
lambda_function.py
입니다.lambda_function.py zip 압축
액션에서 .zip 파일 업로드를 선택하고 업로드합니다.
Reference
이 문제에 관하여(함대 프로비저닝 전에 후크하는 람다 작성 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takmot/items/4e75e3d823f2b9a30acd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)