我在我的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:LATEST
or 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.js
Chrome使用的源代码时,发现使用我的旧代码仍为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 Required
AWS 管理控制台中的 设置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