ਸਥਾਨਕ AWS API ਗੇਟਵੇ 'ਤੇ 403 ਤਰੁੱਟੀਆਂ ਨੂੰ ਸਮਝਣਾ
ਨਾਲ ਕੰਮ ਕਰਨ ਤੋਂ ਬਾਅਦ ਅਤੇ AWS SAM (ਸਰਵਰ ਰਹਿਤ ਐਪਲੀਕੇਸ਼ਨ ਮਾਡਲ) ਦੁਆਰਾ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਜਾਂਚ ਕਰਨਾ, ਇਹ ਉਹਨਾਂ ਬੱਗਾਂ ਨੂੰ ਖੋਜਣਾ ਆਮ ਹੈ ਜੋ API ਦੇ ਤੈਨਾਤ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪੈਦਾ ਨਹੀਂ ਹੁੰਦੇ ਹਨ। ਇੱਕ ਮੁੱਦਾ ਏ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ CORS ਲਈ API ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕੌਂਫਿਗਰ ਕਰਨ ਅਤੇ ਅਧਿਕਾਰਤ ਕਿਸਮ ਨੂੰ "ਕੋਈ ਨਹੀਂ" 'ਤੇ ਸੈੱਟ ਕਰਨ ਦੇ ਬਾਵਜੂਦ, OPTIONS ਵਿਧੀ ਨੂੰ ਚਲਾਉਂਦੇ ਸਮੇਂ। ਇਹ ਸਮੱਸਿਆ ਖਾਸ ਤੌਰ 'ਤੇ ਵਿਗੜ ਸਕਦੀ ਹੈ ਜਦੋਂ ਸੈੱਟਅੱਪ ਤੈਨਾਤ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚੱਲਦਾ ਹੈ।
ਨਾਲ ਸਥਾਨਕ ਤੌਰ 'ਤੇ OPTIONS ਬੇਨਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰਦੇ ਸਮੇਂ , API ਗੇਟਵੇ ਇੱਕ "ਗੁੰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ" ਗਲਤੀ ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਪਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲਾ ਹੈ ਕਿਉਂਕਿ OPTIONS ਵਿਧੀ ਨੂੰ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ 200 ਨਤੀਜਾ ਦੇਣ ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। ਸਫਲ ਸਥਾਨਕ ਵਿਕਾਸ ਲਈ ਇਸ ਅਸਮਾਨਤਾ ਦੇ ਸਰੋਤ ਦੀ ਪਛਾਣ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਇਹ ਸਮਝਣਾ ਕਿ SAM ਲੋਕਲ ਤੈਨਾਤ API ਗੇਟਵੇ ਨਾਲੋਂ ਵੱਖਰਾ ਵਿਵਹਾਰ ਕਿਉਂ ਕਰਦਾ ਹੈ ਇਸ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। ਸੰਰਚਨਾ ਵੇਰਵਿਆਂ ਦੀ ਖੋਜ ਕਰਨਾ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਸਥਾਨਕ ਅਤੇ ਤੈਨਾਤ ਵਾਤਾਵਰਣ ਲਗਭਗ ਸੰਭਵ ਤੌਰ 'ਤੇ ਮੇਲ ਖਾਂਦੇ ਹਨ। ਗਲਤ ਸੰਰਚਨਾਵਾਂ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਅਕਸਰ ਅਜਿਹੀਆਂ ਗਲਤੀਆਂ ਹੁੰਦੀਆਂ ਹਨ।
ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਸਥਾਨਕ ਵਿਕਾਸ ਦੌਰਾਨ 403 ਗਲਤੀ ਦੇ ਸੰਭਾਵਿਤ ਕਾਰਨਾਂ ਅਤੇ ਇਸਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਨਾ ਹੈ ਬਾਰੇ ਵਿਚਾਰ ਕਰਾਂਗੇ। ਅਸੀਂ ਵਿੱਚ ਆਮ ਕਮੀਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰਾਂਗੇ , CORS ਹੈਂਡਲਿੰਗ, ਅਤੇ API ਗੇਟਵੇ ਸੈੱਟਅੱਪ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਇਹਨਾਂ ਰੁਕਾਵਟਾਂ ਤੋਂ ਬਚ ਸਕੋ ਅਤੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਨਿਰਮਾਣ ਜਾਰੀ ਰੱਖ ਸਕੋ।
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
app.options() | Express.js ਵਿੱਚ OPTIONS ਬੇਨਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਰੂਟ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਪ੍ਰੀਫਲਾਈਟ CORS ਹੈਂਡਲਿੰਗ ਲਈ ਲੋੜੀਂਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਹ ਸਰਵਰ ਨੂੰ POST ਬੇਨਤੀ ਨਾਲ ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ CORS ਪ੍ਰੀਫਲਾਈਟ ਸਵਾਲਾਂ 'ਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। |
res.setHeader() | ਇਹ ਫੰਕਸ਼ਨ ਜਵਾਬ ਵਿੱਚ ਖਾਸ HTTP ਸਿਰਲੇਖ ਸੈੱਟ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ , ਜੋ ਕਿ CORS ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਣ ਅਤੇ ਵੱਖ-ਵੱਖ ਸਰੋਤਾਂ ਤੋਂ API ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ 403 ਤਰੁੱਟੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ। |
PassthroughBehavior | AWS API ਗੇਟਵੇ ਵਿਧੀਆਂ ਲਈ ਇੱਕ ਕਸਟਮ ਕੌਂਫਿਗਰੇਸ਼ਨ ਜੋ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਜਦੋਂ ਕੋਈ ਮੇਲ ਖਾਂਦਾ ਟੈਮਪਲੇਟ ਉਪਲਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਬੇਨਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਣਾ ਹੈ। ਇਸ 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਮੌਕ ਏਕੀਕਰਣ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦੋਂ ਕੋਈ ਖਾਸ ਬੇਨਤੀ ਟੈਮਪਲੇਟ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। |
IntegrationHttpMethod | ਬੈਕਐਂਡ ਸੇਵਾ ਨੂੰ ਕਾਲ ਕਰਨ ਲਈ API ਗੇਟਵੇ ਦੁਆਰਾ ਵਰਤੀ ਗਈ HTTP ਵਿਧੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, Lambda ਫੰਕਸ਼ਨ)। API ਗੇਟਵੇ ਰੂਟ ਨੂੰ ਉਚਿਤ HTTP ਵਿਧੀ ਨਾਲ ਜੋੜਨ ਲਈ ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਜੋ ਬੈਕਐਂਡ ਕਾਰਵਾਈ ਸ਼ੁਰੂ ਕਰੇਗਾ। |
AWS::ApiGateway::Method | AWS SAM ਟੈਂਪਲੇਟ ਇੱਕ API ਗੇਟਵੇ ਵਿਧੀ ਸਰੋਤ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ। HTTP ਵਿਧੀਆਂ (POST, OPTIONS) ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇਹ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ API ਗੇਟਵੇ ਨੂੰ ਸਮਰਥਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਬੈਕਐਂਡ ਏਕੀਕਰਣ ਲਈ ਮੈਪ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। |
ResponseParameters | ਇਹ ਕਮਾਂਡ API ਗੇਟਵੇ ਏਕੀਕਰਣ ਜਵਾਬਾਂ ਵਿੱਚ ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਜੋ ਸਿਰਲੇਖਾਂ ਨੂੰ ਸੈੱਟ ਕਰਕੇ CORS ਸਹਾਇਤਾ ਨੂੰ ਸਮਰੱਥ ਬਣਾਇਆ ਜਾ ਸਕੇ ਜਿਵੇਂ ਕਿ . ਇਹ ਪੈਰਾਮੀਟਰ CORS ਨੀਤੀ ਦੇ ਅਨੁਸਾਰ ਗਾਹਕ ਨੂੰ ਵਾਪਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। |
app.route() | ਇਹ ਫਲਾਸਕ ਕਮਾਂਡ ਖਾਸ ਫੰਕਸ਼ਨਾਂ ਲਈ HTTP ਵਿਧੀਆਂ (ਜਿਵੇਂ ਕਿ POST ਅਤੇ OPTIONS) ਦਾ ਨਕਸ਼ਾ ਬਣਾਉਂਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, OPTIONS (ਪ੍ਰੀਫਲਾਈਟ ਸਵਾਲਾਂ) ਅਤੇ POST (ਮੁੱਖ API ਬੇਨਤੀਆਂ) ਲਈ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। |
!Ref | AWS CloudFormation/SAM ਟੈਂਪਲੇਟਸ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ!ਰੈਫ ਟੈਮਪਲੇਟ ਵਿੱਚ ਹੋਰ ਸਰੋਤਾਂ ਦੇ ਹਵਾਲੇ। ਉਦਾਹਰਨ ਲਈ, ਇਸਦਾ ਹਵਾਲਾ ਦੇਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ API ਕਾਲਾਂ ਨੂੰ ਸਹੀ URL ਨਾਲ ਸਹੀ ਤਰ੍ਹਾਂ ਲਿੰਕ ਕਰੋ। |
app.response_class() | ਇਹ ਕਮਾਂਡ ਫਲਾਸਕ ਵਿੱਚ ਇੱਕ ਕਸਟਮ ਜਵਾਬ ਆਬਜੈਕਟ ਤਿਆਰ ਕਰਦੀ ਹੈ, ਤੁਹਾਨੂੰ HTTP ਸਥਿਤੀ ਕੋਡਾਂ ਅਤੇ ਸਿਰਲੇਖਾਂ ਉੱਤੇ ਨਿਯੰਤਰਣ ਦਿੰਦੀ ਹੈ। ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਕੁਝ CORS ਸਿਰਲੇਖਾਂ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਸੌਖਾ ਹੈ, ਜਿਵੇਂ ਕਿ . |
AWS API ਗੇਟਵੇ ਲੋਕਲ ਇਨਵੋਕੇਸ਼ਨ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਅਨੁਕੂਲ ਬਣਾਉਣਾ
ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਸਥਾਨਕ ਵਿਕਾਸ ਦੌਰਾਨ 403 ਗਲਤੀ ਦੇ ਸੰਭਾਵਿਤ ਕਾਰਨਾਂ ਅਤੇ ਇਸਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰਨਾ ਹੈ ਬਾਰੇ ਵਿਚਾਰ ਕਰਾਂਗੇ। ਅਸੀਂ ਵਿੱਚ ਆਮ ਕਮੀਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰਾਂਗੇ , CORS ਹੈਂਡਲਿੰਗ, ਅਤੇ API ਗੇਟਵੇ ਸੈੱਟਅੱਪ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਇਹਨਾਂ ਰੁਕਾਵਟਾਂ ਤੋਂ ਬਚ ਸਕੋ ਅਤੇ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਨਿਰਮਾਣ ਜਾਰੀ ਰੱਖ ਸਕੋ।
ਐਕਸਪ੍ਰੈਸ ਸਰਵਰ ਵਿੱਚ, ਅਸੀਂ ਵਰਤਦੇ ਹਾਂ CORS ਸਿਰਲੇਖਾਂ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਜਿਵੇਂ ਕਿ "Access-Control-Allow-Origin" ਅਤੇ "Access-Control-Allow- Methods"। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਢੁਕਵੇਂ ਸਿਰਲੇਖ ਕਲਾਇੰਟ ਨੂੰ ਵਾਪਸ ਕਰ ਦਿੱਤੇ ਗਏ ਹਨ, ਕ੍ਰਾਸ-ਓਰੀਜਨ ਬੇਨਤੀਆਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋਏ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਸਕ੍ਰਿਪਟ ਦੀ POST ਵਿਧੀ AWS SDK ਰਾਹੀਂ AWS DynamoDB ਟੇਬਲ ਨਾਲ ਜੁੜਦੀ ਹੈ। ਸਕੈਨ ਓਪਰੇਸ਼ਨ ਇੱਕ ਰੀਡ-ਓਨਲੀ ਕਿਰਿਆ ਹੈ ਜੋ ਚੁਣੀ ਗਈ ਸਾਰਣੀ ਤੋਂ ਸਾਰੇ ਰਿਕਾਰਡ ਵਾਪਸ ਕਰਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਅਸੀਂ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਡਾਟਾਬੇਸ ਇੰਟਰੈਕਸ਼ਨਾਂ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਹੀ ਤਰੁੱਟੀ ਪ੍ਰਬੰਧਨ ਦੀ ਵਰਤੋਂ ਡੇਟਾਬੇਸ ਕਨੈਕਸ਼ਨ ਮੁੱਦਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸਰਵਰ ਅਸਫਲਤਾਵਾਂ ਲਈ ਉਚਿਤ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।
ਦੂਜੀ ਉਦਾਹਰਨ, ਫਲਾਸਕ ਦੇ ਨਾਲ ਪਾਈਥਨ ਵਿੱਚ ਬਣੀ, Node.js ਸਕ੍ਰਿਪਟ ਦੇ ਸਮਾਨ ਕਾਰਜਸ਼ੀਲਤਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ ਪਰ ਇਹ ਉਹਨਾਂ ਡਿਵੈਲਪਰਾਂ ਲਈ ਹੈ ਜੋ ਪਾਈਥਨ ਨਾਲ ਵਧੇਰੇ ਅਨੁਭਵੀ ਹਨ। ਫਲਾਸਕ ਦੇ ਵਿਧੀ OPTIONS ਅਤੇ POST ਦੋਵਾਂ ਤਰੀਕਿਆਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਰੂਟੀਨਾਂ ਲਈ ਰੂਟ ਕਰਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ CORS ਪ੍ਰੀਫਲਾਈਟ ਬੇਨਤੀਆਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ। ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਸਟਮ ਜਵਾਬਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਵਿਧੀ, ਜਿਸ ਵਿੱਚ ਸੰਬੰਧਿਤ CORS ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਹਨ। POST ਵਿਧੀ, ਜਿਵੇਂ Node.js ਉਦਾਹਰਨ, ਇੱਕ DynamoDB ਟੇਬਲ ਨੂੰ ਸਕੈਨ ਕਰਨ ਲਈ Python (boto3) ਲਈ AWS SDK ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ। ਇਹ ਮਾਡਿਊਲਰਿਟੀ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸਿਰਫ਼ ਇਸ ਆਧਾਰ 'ਤੇ ਬੈਕਐਂਡ ਨੂੰ ਬਦਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ ਕਿ ਉਹ JavaScript ਜਾਂ Python ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ।
ਅੰਤ ਵਿੱਚ, SAM ਟੈਂਪਲੇਟ ਸੈਟਅਪ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ AWS API ਗੇਟਵੇ POST ਅਤੇ OPTIONS ਸਵਾਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਉਚਿਤ ਰੂਪ ਵਿੱਚ ਸੈੱਟਅੱਪ ਕੀਤਾ ਗਿਆ ਹੈ। ਦ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ "WHEN_NO_MATCH" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ API ਗੇਟਵੇ ਨੂੰ ਉਹਨਾਂ ਬੇਨਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜੋ ਪਹਿਲਾਂ ਤੋਂ ਨਿਰਧਾਰਤ ਟੈਂਪਲੇਟ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀਆਂ। ਇਹ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਮੌਕ ਏਕੀਕਰਣ ਨਾਲ ਕੰਮ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਿਸਟਮ ਨੂੰ ਬੈਕਐਂਡ ਲਾਂਬਡਾ ਨੂੰ ਚਲਾਏ ਬਿਨਾਂ 200 ਸਥਿਤੀ ਕੋਡ ਪ੍ਰਦਾਨ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਦ ਅਤੇ ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ਅਤੇ ਜਵਾਬ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦੇ ਹਨ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਵਿਕਲਪ ਵਿਧੀ ਕਲਾਇੰਟ ਨੂੰ ਇੱਕ ਸਹੀ CORS ਸੰਰਚਨਾ ਭੇਜਦੀ ਹੈ। ਸਥਾਨਕ SAM ਟੈਸਟਾਂ ਦੌਰਾਨ "403 ਵਰਜਿਤ" ਮੁੱਦੇ ਤੋਂ ਬਚਣ ਲਈ ਇਹ ਵਿਧੀ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਸਥਾਨਕ SAM ਮੰਗ ਲਈ AWS API ਗੇਟਵੇ 'ਤੇ 403 ਤਰੁੱਟੀਆਂ ਨੂੰ ਠੀਕ ਕਰਨਾ।
ਹੱਲ 1: Express.js ਅਤੇ AWS SDK ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ Node.js ਬੈਕਐਂਡ, ਕੁਸ਼ਲ CORS ਅਤੇ OPTIONS ਹੈਂਡਲਿੰਗ ਦੇ ਨਾਲ।
// Import required modules
const express = require('express');
const AWS = require('aws-sdk');
const cors = require('cors');
const app = express();
app.use(cors());
// Middleware for JSON request parsing
app.use(express.json());
// CORS preflight response handling
app.options('/scanRecords', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.status(200).send();
});
// Main POST method for scanRecords
app.post('/scanRecords', async (req, res) => {
const dynamoDB = new AWS.DynamoDB.DocumentClient();
try {
const params = { TableName: 'RecordsTable' };
const data = await dynamoDB.scan(params).promise();
res.status(200).json(data);
} catch (err) {
res.status(500).send('Error fetching records');
}
});
// Start the Express server on PORT 3000
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
AWS SAM ਲੋਕਲ ਵਿੱਚ "ਗੁੰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ" ਨੂੰ ਹੱਲ ਕਰਨਾ
ਹੱਲ 2: ਫਲਾਸਕ ਦੇ ਨਾਲ ਇੱਕ ਪਾਈਥਨ ਬੈਕਐਂਡ, ਸਥਾਨਕ SAM ਅਤੇ API ਗੇਟਵੇ ਨਾਲ ਸੰਰਚਿਤ
from flask import Flask, jsonify, request
import boto3
app = Flask(__name__)
# CORS headers for OPTIONS requests
@app.route('/scanRecords', methods=['OPTIONS'])
def options_method():
response = app.response_class(status=200)
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'
return response
# POST method to scan records from DynamoDB
@app.route('/scanRecords', methods=['POST'])
def scan_records():
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('RecordsTable')
try:
response = table.scan()
return jsonify(response['Items']), 200
except Exception as e:
return str(e), 500
# Run the Flask app on port 3000
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=3000)
SAM ਨਾਲ AWS API ਗੇਟਵੇ ਲੋਕਲ ਇਨਵੋਕੇਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ
ਹੱਲ 3: OPTIONS ਬੇਨਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਅਤੇ 403 ਤਰੁੱਟੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ SAM ਟੈਂਪਲੇਟ ਕੌਂਫਿਗਰ ਕਰੋ।
Resources:
scanRecords:
Type: AWS::Serverless::Function
Properties:
Handler: dist/dynamo/CRUD.scanRecords
CodeUri: ./backend
Policies:
- AmazonDynamoDBFullAccess
- CloudWatchLogsFullAccess
Events:
ApiEvent:
Type: Api
Properties:
Path: /scanRecords
Method: post
scanRecordsOptionsMethod:
Type: AWS::ApiGateway::Method
Properties:
AuthorizationType: NONE
HttpMethod: OPTIONS
ResourceId: !Ref scanRecordsResource
RestApiId: !Ref apiGatewayRestApi
Integration:
Type: MOCK
IntegrationResponses:
- StatusCode: 200
ResponseParameters:
method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
method.response.header.Access-Control-Allow-Methods: "'POST,OPTIONS'"
method.response.header.Access-Control-Allow-Origin: "'*'"
AWS API ਗੇਟਵੇ ਲੋਕਲ 403 ਤਰੁੱਟੀਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ
ਏਪੀਆਈ ਗੇਟਵੇ ਵਿੱਚ CORS (ਕਰਾਸ-ਓਰੀਜਨ ਰਿਸੋਰਸ ਸ਼ੇਅਰਿੰਗ) ਨੀਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਇਹ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਇੱਕ SAM ਲੋਕਲ ਇਨਵੋਕ ਦੇ ਦੌਰਾਨ ਇੱਕ 403 ਗਲਤੀ ਵੇਖੀ ਜਾਂਦੀ ਹੈ। ਜਦੋਂ ਕਿ ਤੁਹਾਡੀ ਤੈਨਾਤੀ ਕਲਾਉਡ 'ਤੇ CORS ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲ ਸਕਦੀ ਹੈ, ਸਥਾਨਕ ਬੇਨਤੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਕਈ ਵਾਰ OPTIONS ਵਿਧੀ ਨੂੰ ਕਿਵੇਂ ਨਜਿੱਠਿਆ ਜਾਂਦਾ ਹੈ ਦੇ ਵਿਚਕਾਰ ਅਸੰਗਤਤਾਵਾਂ ਦਾ ਨਤੀਜਾ ਹੋ ਸਕਦਾ ਹੈ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਸਥਾਨਕ ਵਾਤਾਵਰਣ ਹਮੇਸ਼ਾ ਸਾਰੇ ਸੈੱਟਅੱਪਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਡੁਪਲੀਕੇਟ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀਆਂ ਮੁਸ਼ਕਲਾਂ ਤੋਂ ਬਚਣ ਲਈ ਵਿਕਲਪ ਵਿਧੀ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਜੋੜਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਇੱਕ ਹੋਰ ਮੁੱਖ ਵਿਸ਼ੇਸ਼ਤਾ ਇਹ ਹੈ ਕਿ 403 ਗਲਤੀ ਅਕਸਰ ਗੁੰਮ ਜਾਂ ਗਲਤ ਢੰਗ ਨਾਲ ਸੰਰਚਿਤ API ਗੇਟਵੇ ਅਨੁਮਤੀਆਂ ਨਾਲ ਜੁੜੀ ਹੁੰਦੀ ਹੈ। ਸਥਾਨਕ ਵਿਕਾਸ ਦੇ ਦੌਰਾਨ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਤੁਹਾਡਾ SAM ਟੈਮਪਲੇਟ ਸਹੀ ਢੰਗ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ OPTIONS ਬੇਨਤੀਆਂ ਲਈ "NONE" ਦੇ ਤੌਰ 'ਤੇ, ਅਤੇ ਇਹ ਕਿ ਵਿੱਚ ਸੰਬੰਧਿਤ ਅਨੁਮਤੀਆਂ ਫੰਕਸ਼ਨ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਥਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ. ਨਹੀਂ ਤਾਂ, ਬੇਨਤੀ ਇੱਕ "ਗੁੰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ" ਸੁਨੇਹਾ ਵਾਪਸ ਕਰੇਗੀ, ਇਹ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਸਿਸਟਮ ਇੱਕ ਪ੍ਰਮਾਣਿਕਤਾ ਵਿਧੀ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹੈ ਜੋ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ।
ਅੰਤ ਵਿੱਚ, ਮੇਕ ਏਕੀਕ੍ਰਿਤ ਮਖੌਲ ਕਰਨਾ ਮਖੌਲ ਕਰਨਾ ਇੱਕ ਕੁਸ਼ਲ ਤਕਨੀਕ ਹੈ ਜੋ ਵਿਕਲਪਾਂ ਦੇ ਵਿਧੀ ਲਈ ਲੈਂਬਡਾ ਕਾਰਜਾਂ ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ ਕੁਸ਼ਲ ਤਕਨੀਕ ਹੈ. ਬਣਾਓ ਏ OPTIONS ਵਿਧੀ ਦੀ ਗਾਰੰਟੀ ਦੇਣ ਲਈ ਤੁਹਾਡੇ API ਗੇਟਵੇ ਵਿੱਚ ਜਵਾਬ ਮਾਪਦੰਡਾਂ ਦੇ ਨਾਲ ਲੋੜੀਂਦੇ CORS ਸਿਰਲੇਖਾਂ ਦੇ ਨਾਲ ਇੱਕ ਡਿਫੌਲਟ 200 ਜਵਾਬ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਇਹ ਵਿਕਾਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ 403 ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜੋ ਅਕਸਰ ਸਥਾਨਕ ਅਤੇ ਤੈਨਾਤ ਸੈਟਿੰਗਾਂ ਦੋਵਾਂ ਵਿੱਚ ਅਪ੍ਰਬੰਧਿਤ ਪ੍ਰੀਫਲਾਈਟ ਪੁੱਛਗਿੱਛਾਂ ਕਾਰਨ ਹੁੰਦੀਆਂ ਹਨ।
- ਮੈਨੂੰ ਸਿਰਫ਼ SAM ਲੋਕਲ ਵਿੱਚ 403 ਸਮੱਸਿਆ ਕਿਉਂ ਆ ਰਹੀ ਹੈ ਪਰ ਤੈਨਾਤ ਕੀਤੇ ਜਾਣ 'ਤੇ ਨਹੀਂ?
- ਸਥਾਨਕ ਸੈਮ ਵਾਤਾਵਰਣ ਸੰਪੂਰਨ ਏਪੀਆਈ ਗੇਟਵੇ ਕੌਂਫਿਗ੍ਰੇਸ਼ਨ ਦੀ ਨਕਲ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਖਾਸ ਕਰਕੇ ਅਤੇ ਕੋਸ ਸੈਟਿੰਗਜ਼. ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਸਥਾਨਕ ਸੈਟਅਪ OPTIONS ਬੇਨਤੀਆਂ ਲਈ ਜਾਅਲੀ ਏਕੀਕਰਣ ਸਮੇਤ, ਤੈਨਾਤ ਕੀਤੀਆਂ ਸੈਟਿੰਗਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
- "ਗੁੰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ" ਗਲਤੀ ਕੀ ਹੈ?
- ਇਹ ਤਰੁੱਟੀ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ API ਗੇਟਵੇ ਇੱਕ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨ ਚਾਹੁੰਦਾ ਹੈ, ਜੋ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ ਸੀ। OPTIONS ਬੇਨਤੀਆਂ ਲਈ, ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਤੁਹਾਡੇ ਸੈਮ ਟੈਂਪਲੇਟ ਵਿੱਚ ਸਹੀ ਤਰ੍ਹਾਂ ਕੌਂਫਿਗਰ ਕੀਤਾ ਗਿਆ ਹੈ.
- ਮੈਂ AWS API ਗੇਟਵੇ ਵਿੱਚ CORS ਪ੍ਰੀਫਲਾਈਟ ਬੇਨਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਾਂ?
- CORS ਨੂੰ ਸੰਭਾਲਣ ਲਈ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਵਿਧੀ ਨੂੰ ਸੰਬੰਧਿਤ ਜਵਾਬ ਸਿਰਲੇਖਾਂ ਨਾਲ ਸਹੀ ਢੰਗ ਨਾਲ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ ਅਤੇ .
- ਕੀ ਮੈਂ AWS SAM ਨਾਲ ਸਥਾਨਕ ਤੌਰ 'ਤੇ CORS ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ, ਤੁਸੀਂ ਸਥਾਨਕ ਤੌਰ 'ਤੇ CORS ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ ਵਿਧੀ ਜਾਂ ਬਰਾਬਰ API ਗੇਟਵੇ ਸੰਰਚਨਾ ਪ੍ਰੀਫਲਾਈਟ OPTIONS ਬੇਨਤੀ ਲਈ ਉਚਿਤ ਸਿਰਲੇਖ ਵਾਪਸ ਕਰਦੀ ਹੈ।
- ਏ ਈ ਏ ਪੀਆਈ ਗੇਟਵੇ ਵਿੱਚ ਮਖੌਲ ਕੀ ਏਕੀਕਰਣ ਹੈ?
- ਏ ਤੁਹਾਨੂੰ ਬੈਕਐਂਡ ਲਾਂਬਡਾ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕੀਤੇ ਬਿਨਾਂ API ਗੇਟਵੇ ਤੋਂ ਸਥਿਰ ਜਵਾਬ ਵਾਪਸ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, OPTIONS ਬੇਨਤੀਆਂ ਲਈ CORS ਹੈਂਡਲਿੰਗ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦਾ ਹੈ।
ਸਥਾਨਕ SAM ਵਾਤਾਵਰਨ ਵਿੱਚ OPTIONS ਬੇਨਤੀਆਂ ਲਈ 403 ਗਲਤੀਆਂ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੀ ਅਤੇ ਅਨੁਮਤੀਆਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਰਚਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਤੁਹਾਡੇ ਤੈਨਾਤ AWS ਕੌਂਫਿਗਰੇਸ਼ਨ ਨਾਲ ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ ਤੁਹਾਡੇ ਸਥਾਨਕ ਵਾਤਾਵਰਣ ਨਾਲ ਮੇਲ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਗੁੰਮ ਟੋਕਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਰੋਕਣ ਲਈ, ਅਧਿਕਾਰਤ ਕਿਸਮ ਨੂੰ "ਕੋਈ ਨਹੀਂ" ਵਿੱਚ ਬਦਲੋ ਅਤੇ ਪ੍ਰੀਫਲਾਈਟ CORS ਪੁੱਛਗਿੱਛਾਂ ਲਈ ਜਾਅਲੀ ਏਕੀਕਰਣ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹਨਾਂ ਸੈਟਿੰਗਾਂ ਦੀਆਂ ਚਿੰਤਾਵਾਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨਾ ਨਿਰਵਿਘਨ ਸਥਾਨਕ ਵਿਕਾਸ ਅਤੇ ਸਹੀ API ਗੇਟਵੇ ਵਿਵਹਾਰ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।
- AWS SAM CLI ਅਤੇ API ਗੇਟਵੇ ਸਥਾਨਕ ਵਿਕਾਸ 'ਤੇ ਵਿਸਤਾਰ ਕਰਦਾ ਹੈ, CORS ਸਵਾਲਾਂ ਨੂੰ ਸੰਭਾਲਣ 'ਤੇ ਧਿਆਨ ਕੇਂਦ੍ਰਤ ਕਰਦਾ ਹੈ। ਅਧਿਕਾਰਤ AWS ਦਸਤਾਵੇਜ਼ ਵਿਸਤ੍ਰਿਤ ਸੂਝ ਅਤੇ ਉਦਾਹਰਨਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਮੁਲਾਕਾਤ: AWS SAM CLI ਦਸਤਾਵੇਜ਼।
- API ਗੇਟਵੇ ਮੁੱਦਿਆਂ ਜਿਵੇਂ ਕਿ 403 ਵਰਜਿਤ ਗਲਤੀਆਂ ਅਤੇ ਗੁੰਮ ਪ੍ਰਮਾਣਿਕਤਾ ਟੋਕਨਾਂ ਲਈ ਵਿਸਤ੍ਰਿਤ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਦੇਖੋ: .AWS API ਗੇਟਵੇ ਅਸ਼ੁੱਧੀ ਹੈਂਡਲਿੰਗ।
- API ਗੇਟਵੇ ਅਤੇ ਲਾਂਬਡਾ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ CORS ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਲਈ ਇੱਕ ਪੂਰੀ ਗਾਈਡ। ਸਥਾਨਕ ਟੈਸਟਿੰਗ ਦੌਰਾਨ CORS ਮੁੱਦੇ 403 ਗਲਤੀਆਂ ਦਾ ਇੱਕ ਆਮ ਸਰੋਤ ਹਨ। ਇੱਥੇ ਹੋਰ ਜਾਣਕਾਰੀ: AWS ਗਿਆਨ ਕੇਂਦਰ।