私の特定の問題は、インスタンス化されている Bean がファイルの間違った場所を探していることです。私のアプリの構成では、その値は定義されておらず、Bean のデフォルトです。
ここに私のアプリの設定があります:
@Configuration
public class AWSConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(AWSConfig.class);
// base sqs endpoint url is injected from application.properties
@Bean(name="awsClient")
@Primary
public AmazonSQSAsyncClient amazonSQSClient() {
LOGGER.info("Instantiating AmazonSQSAsyncClient Bean");
AmazonSQSAsyncClient awsSQSAsyncClient
= new AmazonSQSAsyncClient();
return awsSQSAsyncClient;
}
}
テストクラスは次のとおりです。
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class SqsQueueDaoIT {
private static final Logger LOGGER = LoggerFactory.getLogger(SqsQueueDaoIT.class);
@Autowired
SqsQueueDao sqsQueueDao;
@Autowired
AmazonSQSAsync amazonSQSAsync;
final String TEST_QUEUE_NAME = "queueName";
final String TEST_QUEUE_ENDPOINT = "sqs.us-east-1.amazonaws.com/123123123123123/";
final String TEST_ACTION = "validate";
final String TEST_BODY = "new body";
@Test
public void helloTest() {
sqsQueueDao.send(TEST_QUEUE_NAME, TEST_ACTION, TEST_BODY);
String body = receiveMessageResult().getMessages().get(0).getBody();
assertTrue(body.contains("action"));
assertTrue(body.contains("source_system_id"));
assertTrue(body.contains(TEST_ACTION));
assertTrue(body.contains(TEST_BODY));
}
private ReceiveMessageResult receiveMessageResult() {
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(TEST_QUEUE_ENDPOINT + TEST_QUEUE_NAME);
receiveMessageRequest.putCustomQueryParameter("QueueName", TEST_QUEUE_NAME);
receiveMessageRequest.putCustomQueryParameter("QueueUrl", TEST_QUEUE_ENDPOINT);
return amazonSQSAsync.receiveMessage(receiveMessageRequest);
}
}
テストを実行できないエラーは次のとおりです。
Failed to instantiate [com.amazonaws.auth.profile.ProfilesConfigFile]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: AWS credential profiles file not found in the given path: /Users/user.name/Code/fullfillment/default
Bean のデフォルトは別の場所であり、それがどこにあるかを確認するために設定している場所はありません。
- Spring を使用した AWS に関する特定の知識がある場合、よくあることはありますか?
- テストを実行するために、spring-boot:run が実行するアプリケーションの実行を正確に再現するにはどうすればよいでしょうか?