2017-08-22 11 views
1

利用可能EC2メタデータがありません、私はローカルに春のブートAWSアプリケーションを実行しようとしているとき、私は以下のエラーを取得しています:春のブート起動エラー:

は、利用可能なEC2メタデータがありませんアプリケーションがEC2環境で実行されていないためです。

<aws-context:context-credentials> 
    <aws-context:simple-credentials access-key="*****" secret-key="*****"/> 
    </aws-context:context-credentials> 
    <aws-context:context-region auto-detect="false" region="ap-south-1" /> 
<aws-context:context-resource-loader/> 
<aws-messaging:annotation-driven-queue-listener max-number-of-messages="10" wait-time-out="20" visibility-timeout="3600"/> 

私は下のクラスでSQSListnerと聞きしようとしています:

アプリケーションが私のAWS-config.xmlには、以下のように見えるEC2インスタンス上

を実行している場合、領域検出にのみ可能です

@Configuration 
@EnableSqs 
@ImportResource("classpath:/aws-config.xml") 
@EnableRdsInstance(databaseName = "******", 
       dbInstanceIdentifier = "*****", 
       password = "******") 
public class AwsResourceConfig { 
@SqsListener(value = "souviksqs", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS) 
public void receiveNewFileUpload(S3EventNotification event) { 
    try { 
     if (event != null && !CollectionUtils.isNullOrEmpty(event.getRecords()) && event.getRecords().get(0) != null) { 
      S3Entity entry = event.getRecords().get(0).getS3(); 
      System.out.println("############ File Uploaded to ###################### " + entry.getBucket().getName() + "/" + entry.getObject().getKey()); 
     } 
    } catch (Exception e) { 
     System.out.println("Error reading the SQS message " + e); 

    } 
} 

}

編集:ただ、私は、次のAWSメッセージングMavenの依存関係を含めるときにエラーが来ることに気づい:

<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-aws-messaging</artifactId> 
     <version>${spring-cloud-aws-version}</version> 
    </dependency> 

私は春-クラウドAWS-バージョンを使用しています - 1.2.1.RELEASE

+0

は多分 'AP-南-1 '領域は、まだ'春-クラウドaws'でサポートされていませんか? – Strelok

+0

私はspring-cloud-aws-version-1.2.1.RELEASEを使用しています。これはap-south-1をサポートしています。 – souvikc

答えて

0

は、問題を発見しました。 SQSメッセージング用にspring-cloud-starter-aws-messagingを使用していました。 上記の依存関係には、多くのAuto Detectクラスが含まれています。これらのクラスは、必要でなくても最終的には起動します。

代わりにspring-cloud-aws-messagingを使用して、他の多くの自動検出の問題とともにこの問題を解決しました。

4

私はspringframework.cloud.aws.autoconfigureを使用していましたが、同じ問題がありました。その理由は、NON AWS ENVIRONMENTでアプリケーションを実行するときに手動で領域を設定する必要があるためです。地元。だから、このプロパティをアプリケーションのlocal.propertiesに入れて、あなたは良いものになるはずです。

cloud.aws.region.static = US-東-1

+0

うわー...これを修正しようとしている日曜日の午後全体をwaisted。 AWS DynamoDBを使用してアプリケーションを作成しましたが、アプリケーションは失敗し続けました。あなたの "cloud.aws.region.static = us-east-1"はすばらしい発見でした。私が強調してくれたように実装しました。私のアプリケーションは正常に動作しました。 – skmansfield

関連する問題