Search

Security

Service Network Protection
Authentication Policy Based Service Protection
AWS SigV4

signSigV4.py

from botocore.auth import SigV4Auth import requests from botocore.awsrequest import AWSRequest from botocore.credentials import Credentials import botocore.session import sys def make_request(endpoint_url, method): session = botocore.session.Session() sigv4 = SigV4Auth(session.get_credentials(), 'vpc-lattice-svcs', 'ap-northeast-2') endpoint = endpoint_url data = "some-data-here" headers = {'Content-Type': 'application/json'} if method.lower() == "post": request = AWSRequest(method='POST', url=endpoint, data=data, headers=headers) request.context["payload_signing_enabled"] = False # This is mandatory since VpcLattice does not support payload signing. Not providing this will result in error. sigv4.add_auth(request) prepped = request.prepare() response = requests.post(prepped.url, headers=prepped.headers, data=data) elif method.lower() == "get": request = AWSRequest(method='GET', url=endpoint, headers=headers) request.context["payload_signing_enabled"] = False # This is mandatory since VpcLattice does not support payload signing. Not providing this will result in error. sigv4.add_auth(request) prepped = request.prepare() response = requests.get(prepped.url, headers=prepped.headers) else: print ("Pls enter GET or POST for method and make sure the URL is accessible") return print (response.text) if __name__ == '__main__': if len(sys.argv) < 3: print("Please provide endpoint URL and method (GET or POST) as arguments") sys.exit(1) endpoint_url = sys.argv[1] method = sys.argv[2] make_request(endpoint_url, method)
Python
복사
export reservation_svc_dns=$(aws vpc-lattice list-services | jq -r '.items[].dnsEntry.domainName' | grep 'reservation') export parking_svc_dns=$(aws vpc-lattice list-services | jq -r '.items[].dnsEntry.domainName' | grep 'parking') python3 signSigV4.py https://${reservation_svc_dns} POST python3 signSigV4.py https://${reservation_svc_dns} GET
Shell
복사