2015-07-02 106 views
3

我目前有一個連接問題,試圖使用Spring Cloud和Spring Boot連接到AWS SQS隊列。我相信我擁有了一切配置很好,但我得到:Spring Cloud AWS SQS AccessDenied

2015年7月1日18:12:11926 [WARN] [ - ] org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext [487] - 在上下文初始化期間遇到異常 - 取消刷新嘗試 org.springframework.context.ApplicationContextException:未能到 start bean'simpleMessageListenerContainer';嵌套的異常是 com.amazonaws.AmazonServiceException:對資源的訪問 https://sqs.us-west-2.amazonaws.com/ {Number}/{隊列名稱}被拒絕。 (服務:AmazonSQS;狀態碼:403;錯誤代碼:存取遭拒; 請求ID:87312428-ec0f-5990-9f69-6a269a041b4d)

@Configuration 
@EnableSqs 
public class CloudConfiguration { 
    private static final Logger log = Logger.getLogger(CloudConfiguration.class); 

    @MessageMapping("QUEUE") 
    public void retrieveProvisionMessages(User user) { 
     log.warn(user.firstName); 
    } 
} 

YML

cloud: 
    aws: 
     credentials.accessKey: AccessKey 
     credentials.secretKey: SecretKey 
     region.static: us-west-2 
     credentials.instanceProfile: true 

當它試圖連接我看到一個標頭值:

AWS4-HMAC-SHA256 Credential=accesskey/20150701/us-west-2/sqs/aws4_request, SignedHeaders=host;user-agent;x-amz-date, Signature=signature 

請求發送後:

HTTP/1.1 403 Forbidden [Server: Server, Date: Wed, 01 Jul 2015 22:51:25 GMT, Content-Type: text/xml, Content-Length: 349, Connection: keep-alive, x-amzn-RequestId: Request Id] [email protected] 

我已經檢查過所有的AIM政策,它們都是正確的。

使用:

private AmazonSQS establishQueue(){ 
    AmazonSQS sqs = new AmazonSQSClient(new BasicAWSCredentials(accessKey, secretKey)); 
    sqs.setRegion(RegionUtils.getRegion(region)); 
    return sqs; 
} 


    AmazonSQS sqs = establishQueue(); 
    return sqs.receiveMessage(sqs.getQueueUrl(userProductPurchase).getQueueUrl()); 

具有相同的憑據工作正常。任何幫助是極大的讚賞。

感謝

回答

1

你已經允許您的IAM用戶GetQueueAttributes電話?

我認爲它也使用更少的操作。不僅有ReceiveMessageGetQueueUrl

+0

是的,我在測試過程中完全打開了所有的訪問。再次使用AWS SDK一切正常,只是無法連接到Spring Cloud組件。 –

+0

你可以試用AWS SDK的GetQueueAttributes嗎?我不認爲你可以在任何事情都被允許時拒絕訪問。 –