0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AngularアプリをS3でホスティングするとこけた話

Last updated at Posted at 2021-05-07

前回までのあらすじ

https://qiita.com/NoOne/items/51383d096b6a4760b2dd

HTMLvideoが使えない!

こちらの記事の通りにS3へホスティングするもnavigator.mediaDevicesでビデオが起動しないエラー。 https://qiita.com/BBA/items/4de0132e63a371da4626

調べたところ記事の内容でS3へのホスティングはできてはいるのですが、SSL化されていない(http)とvideoデバイスへのアクセスができないとのことです。

app.component.ts
import { Component } from '@angular/core';
import { ImgService } from './img.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent  { 
  constructor(private service: ImgService) { }
  private video: any;
  result: String = ""; 

  ngOnInit(): void {
    this.video = document.querySelector('video')!;

    const options = {
      video: true
    }
    //ここが怒られてしまう
    navigator.mediaDevices.getUserMedia(options)
    .then(stream => {
      this.video.srcObject = stream;
    })
    .catch((error) =>{
      console.log(error);
    })
  }

  captureImg(){
    let canvas = document.getElementById('canvas') as HTMLCanvasElement;
    const context = canvas.getContext('2d');
    context?.drawImage(this.video, 0, 0, canvas.width, canvas.height);
    let base64CapturedImg : ConstrainDOMString = canvas.toDataURL("image/png");
    this.service.transferImg(base64CapturedImg).subscribe(
      data => this.result = data,
      error => console.log(error)
    );
  ;
  }
}

CloudFrontでドメインをSSL化

以下の手順でDistributionを設定し作成すると無事SSL化でき、ビデオもアクセス可能になりました。

①S3にデプロイして取得したドメイン名を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/01f83718-7cc7-45b3-a916-f26d4e035733.png)

②Viewer Protocol PolicyをRedirect HTTP to HTTPSに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/a7f6de91-6af5-61cc-ef57-e478cc3b12c0.png)

③Default Root ObjectにS3で指定したインデックスドキュメントと同じように記述(デフォルトはindex.html)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/767e0498-9ce9-4da6-1bc9-d591694feae7.png)

感想など

S3にホスティングだけでこけるとは思いませんでしたが、カメラ等デバイスにアクセスするにはSSL化が必要というのは今後またどこかで役立ちそうな知識でよかったです。Springの方も確実にホスティングこけますが頑張ります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?