微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Device Farm-Appium / Java / TestNG-加密凭证

如何解决AWS Device Farm-Appium / Java / TestNG-加密凭证

我正在使用AWS Device Farm为Android和iOS运行Cucumber测试。

作为测试的一部分,我需要访问第三方API来比较实际和预期结果,并提供用户名和密码。 提供这些凭证的最佳方法是什么?我想避免以任何形式提供纯文本。

到目前为止,我已经尝试使用AWS Secrets Manager来存储密码,并使用aws-java-sdk-secretsmanager库进行检索。此操作在本地运行,但在设备场上失败,因为未定义环境变量AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY(或分别等效于Java系统属性)(请参阅下面的stacktrace)。 当然,我可以在测试规范文件中对其进行显式设置,但这会破坏目的,因为敏感信息将再次以纯文本格式存储。

是否可以将这些环境变量传播到设备场的计划运行中? 如果没有:加密和提供敏感数据的最佳实践是什么?

谢谢, 西蒙娜

[TestNG] Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [EnvironmentvariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)),SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey),WebIdentityTokenCredentialsProvider: To use assume role profiles the aws-java-sdk-sts module must be on the class path.,com.amazonaws.auth.profile.ProfileCredentialsProvider@1fde0371: profile file cannot be null,com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@6438a7fe: The requested Metadata is not found at http://169.254.169.254/latest/Meta-data/iam/security-credentials/]
[TestNG]    at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:136)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1257)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:833)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:783)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
[TestNG]    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
[TestNG]    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
[TestNG]    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
[TestNG]    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.doInvoke(AWSSecretsManagerClient.java:2737)
[TestNG]    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.invoke(AWSSecretsManagerClient.java:2704)
[TestNG]    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.invoke(AWSSecretsManagerClient.java:2693)
[TestNG]    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.executeGetSecretValue(AWSSecretsManagerClient.java:1222)
[TestNG]    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.getSecretValue(AWSSecretsManagerClient.java:1192)

P.S .:还在AWS论坛上发布了此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。