我在我的mac上使用环境变量来存储一些敏感的凭据,并尝试通过Node访问它们.我将它们添加到我的环境配置文件中
export VARIABLE_NAME=mySensitiveInfo
当我使用时,echo $VARIABLE_NAME我收到正确的输出(我的敏感信息).
但是,当我尝试在Node中访问这个相同的变量process.env.VARIABLE_NAME并尝试在控制台上打印出来时,我得到一个未定义的.
其他环境变量似乎没问题.例如,当我console.log(process.env.FACEBOOK_CALLBACK_URL),它将正确的值打印到我的控制台.我几天前添加了FACEBOOK_CALLBACK_URL.
我是否必须重新启动机器?环境变量在Node中可用之前是否需要一段时间?我在SO上看到的最接近的答案是这篇文章,但没有人能够弄清楚它为什么会发生.
我正在尝试使用Spring Boot配置DynamoDb客户端,并将我的端点和配置信息放在我的resources/application.properties文件中.但是,Spring Boot似乎没有获得这些属性.它确实选择了我存储在同一文件中的"server.default"密钥,因此它肯定会识别文件本身.
这是我的application.properties文件和我正在尝试将属性加载到(DynamoDBClientMapper)的类:
amazon.dynamodb.endpoint=http://localhost:8000/
amazon.dynamodb.region=us-west-1
amazon.aws.accesskey=key
amazon.aws.secretkey=key2
server.port=8080
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试加载属性的相关类.我尝试了@PropertySource注释和新的属性文件,以及EnableAutoConfiguration,但都没有注册属性文件.
@PropertySource("database.properties")
public class DynamoClientMapper {
@Value("${amazon.dynamodb.endpoint}")
private String amazonDynamoDBEndpoint;
@Value("${amazon.aws.accesskey}")
private String amazonAWSAccessKey;
@Value("${amazon.aws.secretkey}")
private String amazonAWSSecretKey;
@Value("${amazon.aws.region}")
private String amazonAWSRegion;
Run Code Online (Sandbox Code Playgroud)
这是我的App.java:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class App {
// private static final Logger logger = Logger.getLogger(App.class.toString());
public static void main(String[] args){
SpringApplication.run(App.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoClientMapper' defined in file [C:\Users\ychen4\Desktop\DiningApplication\target\classes\main\java\com\dining\dao\DynamoClientMapper.class]: Instantiation of bean failed; …Run Code Online (Sandbox Code Playgroud) 我正在将 AWS Lambda 代码作为 zip 文件上传到 S3 存储桶中。
我有一个为 S3 存储桶对象声明的资源:
resource "aws_s3_bucket_object" "source-code-object" {
bucket = "${aws_s3_bucket.my-bucket.id}"
key = "source-code.zip"
source = "lambda_source_code/source-code.zip"
etag = "${base64sha256(file("lambda_source_code/source-code.zip"))}"
}
Run Code Online (Sandbox Code Playgroud)
我还有一个数据声明来压缩我的代码:
data "archive_file" "source-code-zip" {
type = "zip"
source_file = "${path.module}/lambda_source_code/run.py"
output_path = "${path.module}/lambda_source_code/source-code.zip"
}
Run Code Online (Sandbox Code Playgroud)
输出terraform apply不断向我显示哈希值的更改:
~ aws_s3_bucket_object.source-code-object
etag: "old_hash" => "new_hash"
Run Code Online (Sandbox Code Playgroud)
即使我的源代码中没有任何更改。为什么会出现这种行为?我见过类似的帖子,其中 Lambda 的源代码不断变化,但我的 Lambda 实际上并没有每次都更新(在控制台中检查了上次更新时间)。但是,看起来确实在每个apply.
我正在开始使用Tensorflow项目,我正在定义和创建我的功能列.但是,我有数百个功能 - 这是一个非常广泛的数据集.即使在预处理和擦洗之后,我也有很多专栏.
传统的创建方法feature_column在Tensorflow教程甚至StackOverflow文章中定义.您基本上为每个功能列声明并初始化Tensorflow对象:
gender = tf.feature_column.categorical_column_with_vocabulary_list(
"gender", ["Female", "Male"])
Run Code Online (Sandbox Code Playgroud)
如果您的数据集只有几列,这一切都很好,但在我的情况下,我肯定不希望有数百行代码初始化不同的feature_column对象.
解决此问题的最佳方法是什么?我注意到在本教程中,所有列都作为列表收集:
base_columns = [
gender, native_country, education, occupation, workclass, relationship,
age_buckets,
]
Run Code Online (Sandbox Code Playgroud)
哪个最终会传递到您的估算工具中:
m = tf.estimator.LinearClassifier(
model_dir=model_dir, feature_columns=base_columns)
Run Code Online (Sandbox Code Playgroud)
因此,处理feature_column数百列创建的理想方法是将它们直接附加到列表中吗?像这样的东西?
my_columns = []
for col in df.columns:
if is_string_dtype(df[col]): #is_string_dtype is pandas function
my_column.append(tf.feature_column.categorical_column_with_hash_bucket(col,
hash_bucket_size= len(df[col].unique())))
elif is_numeric_dtype(df[col]): #is_numeric_dtype is pandas function
my_column.append(tf.feature_column.numeric_column(col))
Run Code Online (Sandbox Code Playgroud)
这是创建这些功能列的最佳方法吗?或者我错过了Tensorflow的一些功能,让我可以解决这个问题?
长话短说,我不想将任务的 ECS 任务定义修订号硬编码到我的 lambda 源代码中。每次我有更新的任务定义时,基本上都在费力地更新我的源代码。在ECS 的 boto3 文档中run_task(),它明确指出
taskDefinition (string) -- [必需]
要运行的任务定义的系列和修订 (family:revision ) 或完整 ARN。如果未指定修订版,则使用最新的 ACTIVE 修订版。
但是,我发现如果我taskDefinition在client.run_task()没有特定修订号的情况下定义参数,则会出现权限错误:
调用 RunTask 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::MY_ACCOUNT_ID:assumed-role/my-lambda-role/trigger-ecs-task is notauthorized to perform: ecs:RunTask on resource: arn:aws:ecs:MY_REGION:MY_ACCOUNT_ID:task-definition/an-important-task
如果我将定义切换为an-important-task:LATESTor an-important-task:*,则会出现另一个错误:
...无权执行:ecs:RunTask on resource: *
这很奇怪,因为它看起来与文档说明的相反 - 当我包含一个修订号时,比如an-important-task:5,lambda 会完美地触发。在我的 lambda 函数中,我只是调用了我的 ECS 任务:
def lambda_handler(event, context):
client = boto3.client('ecs')
print("Running task.")
response = client.run_task(
cluster='my-cluster',
launchType='FARGATE',
taskDefinition='an-important-task', # <-- notice no revision number …Run Code Online (Sandbox Code Playgroud) 我是一名React新手,试图学习如何将Flask应用程序与React集成。我发现,每当我对React .js文件进行更改时,所做的更改都会重新编译bundle.js到我的浏览器中,而不会出现在浏览器中。
要复制,请从此Github存储库克隆源代码。按照说明进行设置,并确保运行webpack --watch并python app.py从虚拟环境。它应该启动一个简单的Web服务器,该服务器可以从访问localhost:5000。
接下来,进入Hello.js文件并进行一些随机编辑-例如,更改Hello World!为Hello everyone!。从我学到的知识来看,webpack --watch应该注意监听更改并重新编译,这确实可以做到:如果您进入,bundle.js您将看到更改已重新编译:
var Hello = _react2.default.createClass({
displayName: 'Hello',
render: function render() {
return _react2.default.createElement(
'h1',
null,
'Hello, everyone!'
);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,刷新浏览器时,将获得与以前相同的消息(Hello World)。当我检查bundle.jsChrome使用的源代码时,发现使用我的旧代码仍为STILL:
。
我的理论是Chrome使用某种缓存?但是我已经玩了大约一个小时,无法bundle.js更新。
是什么导致浏览器加载bundle.js文件?
编辑:我已重新加载,现在更改已应用于我的浏览器屏幕。但是,刷新和更新似乎耗时特别长,至少需要4-5分钟。有什么办法可以缩短这个时间范围?
我正在尝试为 VPC 创建自己的堡垒主机,并创建一个最小/最大实例数为 1 的自动缩放组。在我的启动配置中,我为 ec2 用户数据指定以下内容:
#!
INSTANCE_ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`
aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id eipalloc-my-eip-id --allow-reassociation
Run Code Online (Sandbox Code Playgroud)
此用户数据的目标是立即将弹性 IP 地址与我新创建的 EC2 实例关联起来 -我从其他 StackOverflow 帖子中读到,在使用 ASG 时必须明确完成此操作。
但是,在 ASG 实例启动并完成初始化后,我在控制台输出中仍然看不到该实例的任何弹性 IP:
我尝试查看系统日志内部,看看初始化期间是否有任何错误消息,但一开始我看不到任何表明命令associate-address失败的信息(内部/var/log/cloud-init-output)。
编辑:尝试调试:
但是,我随后手动将弹性 IP 与我的实例关联,通过 SSH 进行连接,并尝试运行上面的用户数据命令。有趣的是,当我到达该aws ec2 associate-address部分时,我遇到了
无法找到凭据。您可以通过运行“aws configure”来配置凭证。
这似乎是问题的根源 - 我的 AWS 配置文件未配置。但是,我一直认为默认的 AWS 实例配置文件已设置好,您可以在实例完成初始化后访问 AWS CLI。
谁能指出为什么我的用于关联弹性 IP 地址的用户数据可能无法正确执行?
谢谢你!
我有一个 Pandas 数据框,其中包含多个列表列。我想将它们作为ARRAY数据类型插入到我的 Snowflake 表中。
传统上,我使用 PostgreSQL,并简单地插入为df_to_insert.to_sql(TABLE_NAME, sqlalchemy_connection, **other_parameters).
然而,我正在努力插入雪花。当我有一个列表列时,sqlAlchemy Snowflake 方言认为它是一个字符串:
表达式类型与列数据类型不匹配,需要 ARRAY,但列 NAME_OF_COLUMN_WITH_LISTS 为 VARCHAR(2)
我尝试通过添加显式数据类型来向 sqlAlchemy 引擎提示该列不是字符串:
df_to_insert.to_sql("MY_SNOWFLAKE_TABLE_NAME",
snowflake_connection,
if_exists="append",
index=False,
dtype={'NAME_OF_COLUMN_WITH_LISTS': sqlalchemy.types.JSON})
Run Code Online (Sandbox Code Playgroud)
这只会让我:
sqlalchemy.exc.StatementError:(builtins.AttributeError)“SnowflakeDialect”对象没有属性“_json_serializer”
将数据插入变体/数组类型的雪花表并仍然使用 pandas / sqlalchemy 的最佳方法是什么?或者目前还没有什么好的办法吗?
我正在使用 AWS Serverless 创建一个支持 Lambda 函数的 API 网关。
我定义了以下资源和方法:
/projects
-> GET (should require API key)
-> OPTIONS (should not, since it is used for CORS preflight)
Run Code Online (Sandbox Code Playgroud)
我遇到了 CORS 问题并需要 API 密钥。前端客户端代码403 Forbidden在启动预检 CORSOPTIONS请求时出错,因为API Key RequiredAWS 管理控制台中的 设置True为OPTIONS方法。
我想专门为禁用的安全OPTIONS要求,但保持它的所有其他方法(GET,POST等)。这是我的资源定义(您可以看到我ApiKeyRequired: true在Auth对象中设置了默认值:
MyApi:
Type: 'AWS::Serverless::Api'
Name: MyApi
Properties:
Auth:
AddDefaultAuthorizerToCorsPreflight: true
ApiKeyRequired: true # sets for all methods
Cors:
AllowCredentials: true
AllowHeaders: …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation swagger aws-api-gateway aws-serverless
python ×3
terraform ×2
amazon-ec2 ×1
amazon-ecs ×1
amazon-s3 ×1
aws-lambda ×1
flask ×1
git ×1
github ×1
java ×1
javascript ×1
jenkins ×1
node.js ×1
pandas ×1
reactjs ×1
snowflake-cloud-data-platform ×1
spring ×1
spring-boot ×1
sqlalchemy ×1
swagger ×1
tensorflow ×1