हम प्रमाण पत्र प्रदान करने की तीसरी सिफारिश के बाद spark-redshift प्रोजेक्ट का उपयोग करने का प्रयास कर रहे थे। अर्थात्:ईएमआर उदाहरणों में स्पार्क-रेडशिफ्ट के लिए क्रेडेंशियल्स को सही तरीके से कैसे प्रदान किया जाए?
IAM उदाहरण प्रोफाइल: आप EC2 पर चल रहा है और IAM और उदाहरण प्रोफ़ाइल का उपयोग S3 को प्रमाणित कर रहे हैं, तो आप temporary_aws_access_key_id, temporary_aws_secret_access_key कॉन्फ़िगर करना होगा चाहिए, और temporary_aws_session_token विन्यास गुण अस्थायी को इंगित करने के एडब्ल्यूएस सुरक्षा टोकन सेवा के माध्यम से बनाई गई कुंजी। ये अस्थायी कुंजी को फिर लोड के माध्यम से Redshift और UNLOAD आदेशों के माध्यम से पास किया जाएगा।
हमारा स्पार्क एप्लिकेशन ईएमआर क्लस्टर से चल रहा है। इस तरह के प्रयोजन के लिए, हम इस नोड getSessionToken
इस तरह बुला के अंदर उदाहरणों से अस्थायी क्रेडेंशियल प्राप्त करने की कोशिश की:
val stsClient = new AWSSecurityTokenServiceClient(new InstanceProfileCredentialsProvider())
val getSessionTokenRequest = new GetSessionTokenRequest()
val sessionTokenResult = stsClient.getSessionToken(getSessionTokenRequest);
val sessionCredentials = sessionTokenResult.getCredentials()
लेकिन इस 403 Access Denied
फेंकता है, भले ही sts:getSessionToken
साथ नीति ईएमआर के उदाहरण की भूमिका के लिए लागू किया जाता है।
फिर हमने निम्नलिखित दो विकल्पों की कोशिश की। ,
val p = new STSAssumeRoleSessionCredentialsProvider("arn:aws:iam::123456798123:role/My_EMR_Role", "session_name")
val credentials: AWSSessionCredentials = p.getCredentials
val token = credentials.getSessionToken
और दूसरा InstanceProfileCredentialsProvider
से परिणाम कास्टिंग:: सबसे पहले, AssumeRole
नीति का उपयोग
val provider = new InstanceProfileCredentialsProvider()
val credentials: AWSSessionCredentials = provider.getCredentials.asInstanceOf[AWSSessionCredentials]
val token = credentials.getSessionToken
वे दोनों काम करते हैं, लेकिन जो ऐसा करने की उम्मीद तरीका है? क्या परिणाम कास्टिंग या AssumeRole
नीति जोड़ने के बारे में कुछ गलत है?
धन्यवाद!
Ca n आप अपने समाधानों के आस-पास अधिक जानकारी प्रदान करते हैं, जैसे आपने कोई एडिटोनल पैकेज आयात किया है या हम जावा एसडीके को आयात करते हैं?जब मैं स्पार्क-शैल में उपर्युक्त कथन का उपयोग करता हूं, तो यह नहीं जानता कि AWSSessionCredentials क्या है। –