如果 node 運作正常,可以只重新安裝 npm
curl -L https://npmjs.org/install.sh | sudo sh
如果 node 運作正常,可以只重新安裝 npm
curl -L https://npmjs.org/install.sh | sudo sh
Running "sass:dist" (sass) task
Warning: spawn ENOENT Use --force to continue.
Aborted due to warnings.
重新安裝一次 sass 就好了 npm install -g sass
開啟 Lambda console,選擇 create function 輸入 function 名稱(例:auto-reboot-when-health-check-fail),runtime 選擇 Python 2.7,Execution role 的部份因為要使用 Lambda 在 health check 通知不正常時重新啟動 ec2 instance 所以需要有 AmazonEC2FullAccess ,如果你想要觀察 Lambda function print 出的訊息另外需要 CloudWatchLogsFullAccess
使用 Add trigger 加入觸發條件
變數 region 為服務區域的代號,這裡可以查詢。
import boto3
region = 'ap-northeast-1'
ec2 = boto3.resource('ec2')
def lambda_handler(event, context):
# 將 SNS 裡設定的 tags 取出,用來辨別需要重啟哪個 instance
tag = event['Records'][0]['Sns']['Tags'][0]
#print("Tag Key: " + tag['Key'] + " / Value: " + tag['Value'])
filters = [{
'Name': 'tag:Name',
'Values': [tag['Value']]
}]
instances = ec2.instances.filter(Filters=filters)
RunningInstances = [instance.id for instance in instances]
if len(RunningInstances) > 0:
# 找到對應 tag 的 instance
#print("instance.id : " + RunningInstances[0])
ec2Client = boto3.client('ec2', region_name=region)
ec2Client.reboot_instances(InstanceIds=[RunningInstances[0]])
print('reboot your instances: ' + RunningInstances[0])
else:
print("none found")
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "你的 SNS ARN",
"Sns": {
"Type": "Notification",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"TopicArn": "arn:aws:sns:ap-northeast-1:123456789012:ExampleTopic",
"Subject": "My Server Health Low",
"Message": "My Server Health Low",
"Tags": [
{
"Key": "Name",
"Value": "你在 SNS topic 裡設定的 EC2 Instance Name"
}
]
}
}
]
}
設定好之後關閉設定視窗就可以按下 Test 來測試看看了,按照設定的話接收到測試的 SNS 之後該對應的 EC2 Instance 就會重啟了。
以上就是我設定使用 Health check 來偵測,然後通知 Lambda 重啟 EC2 Instance 的方式,歡迎討論。
http://www.cplusplus.com/reference/cstdio/sscanf/?kw=sscanf
/* sscanf example */
#include <stdio.h>
int main ()
{
char sentence []="Rudolph is 12 years old";
char str [20];
int i;
sscanf (sentence,"%s %*s %d",str,&i);
這裡表示 Rudolph is 12 = %s %*s %d
%*s 代表忽略,如果是 %*d 代表忽略的為數字
printf ("%s -> %d\n",str,i);
return 0;
}
輸出 Rudolph -> 12
如果在播放動畫時剛好 Facebook plugins 在初始化會影響動畫的順暢度。
這時候如果可以控制 plugins 在動畫播放完畢後或是在其他較適當的時間出現時,我們可以將 fb plugins 的程式碼在適當的時間再加入。前面需要先 FB.init() 以及載入 SDK 才可以使用 FB 呼叫函式。
var likeBoxPlugin = '<div class="fb-like" data-href="https://www.facebook.com/PartnersStudio/" data-width="50" data-layout="button" data-action="like" data-size="small" data-show-faces="false" data-share="false"></div>'; function insertFbPlugins(container, plugins){ $(container).append(plugins); FB.XFBML.parse($(container)[0]); } insertFbPlugins('.fb-like-container', likeBoxPlugin);